1.go环境搭建(需要Linux系统)
1)下载源码,可以在http://www.golangtc.com/download
2)将其解压到/usr/local目录下: tar -C /usr/local -xzf go1.9.2.linux-amd64.tar.gz
3).在root环境下执行如下命令: mkdir $HOME/go echo ‘export GOROOT=/usr/local/go’>> ~/.bashrc echo ‘export GOPATH=$HOME/go’>> ~/.bashrc echo ‘export PATH=$PATH:$GOROOT/bin’>> ~/.bashrc source $HOME/.bashrc
4). 安装go get工具 yum install mercurial git bzr subversion
2.获取源码
git clone https://github.com/inconshreveable/ngrok.git
3. 编译 1). 配置环境变量
export NGROK_DOMAIN=”ngrok.example.com”
ngrok.example.com替换成你自己的域名。
2). 生成自签名ssl证书
cd ngrok
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj “/CN=$NGROK_DOMAIN” -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj “/CN=$NGROK_DOMAIN” -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key
4. 交叉编译生成windows客户端 上述编译过程生成的服务端和客户端都是linux下的,不能在windows下用。如果想编译生成windows客户端,需要重新配置环境并编译。 交叉编译过程如下:
进入go目录,进行环境配置 cd /usr/local/go/src/
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 ./make.bash 进入ngrok目录重新编译 cd /usr/local/src/ngrok/
GOOS=windows GOARCH=amd64 make release-server release-client 编译后,就会在bin目录下生成windows_amd64目录,其中就包含着windows下运行的服务器和客户端程序。
此时会遇到错误
Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.
解决办法是,下载golang1.4版本,然后执行下面命令。
tar zxvf [go1.4.2.darwin-amd64-osx10.8.tar.gz] cp go/ $home/go-bootstrap/ GOROOT_BOOTSTRAP=$home/go-bootstrap/ export GOROOT_BOOTSTRAP
5.客户端及服务端配置。
以3389远程桌面为例。
客户端新建一个ngrok.cfg文件,内容如下:
server_addr: “ngrok.example.org:1180” trust_host_root_certs: false
tunnels: mstsc: subdomain: “mstsc” remote_port: 4443 proto: tcp: “127.0.0.1:3389”
然后写一个批处理,内容如下:
ngrok -config=ngrok.cfg start mstsc
服务端也写一个批处理,内容如下:
ngrokd.exe -domain=”ngrok.example.org” -httpAddr=”:801” -httpsAddr=”:802” -tunnelAddr=”:1180”
6.参考
1.http://www.360doc.com/content/17/0524/18/29401987\_656833431.shtml