一言以蔽之,你在家连上公司的对外服务器再二级跳到你的服务器上时,是否想过,如果内网的服务器可以直达呢?
配置服务器为非必需步骤,懒人直接看最后的客户端部分。
本人环境: ubuntu 14.04
参考blog:imququ的方法安装,注意和以下步骤中的不同点。
sudo apt-get install build-essential mercurial git
# github.com/gorilla/websocket所以要装1.3以上的go(使用命令
src/github.com/gorilla/websocke... undefined: sync.Pool
make: * [client] Error 2
go version
可查看版本,报错的话说明机器上没有装go,可以直接跳到安装高版本go的环节)apt-get remove golang-xxx
,xxx
可以tab出来,全删。sudo curl -O https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz
sudo tar -xvf go1.6.linux-amd64.tar.gz
sudo mv go /usr/local
sudo vim ~/.profile 添加 export PATH=$PATH:/usr/local/go/bin
source ~/.profile
git clone https://github.com/inconshreveable/ngrok.git ngrok
NGROK_DOMAIN="A的域名或ip"
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
cp base.pem assets/client/tls/ngrokroot.crt
sudo make release-server release-client
make clean
一下,然后重新编译ngrok/bin/
下会出现两个文件ngrokd是服务器端(A)运行的文件,ngrok是客户端(B)运行的文件,不过这里的ngrok文件只能运行在linux系统上;mac系统再执行一遍编译sudo GOOS=darwin GOARCH=amd64 make release-client
就会出来ngrok/bin/darwin_amd64
的目录这里就是mac的客户端;windows编译命令GOOS=windows GOARCH=amd64 make release-client
,会出来一个ngrok/bin/windows_amd64
的目录,里面的exe就是windows下的客户端。(32位的把上面各种命令中的64改成386)sudo ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="A的域名或ip" -httpAddr=":8081" -httpsAddr=":8082"
server_addr:A的域名或ip :4443
trust_host_root_certs: false
./ngrok -config=上述文件路径 -proto=http 80
./ngrok -config=上述文件路径 -proto=tcp 22
./ngrok -config=上述文件路径 -proto=tcp 3389
xxx.com:33821
, 那C就可以用A的域名或ip+分配的端口来连接B了。Copyright © 2015-2016 zhyack. All Rights Reserved.
如对文章有任何疑问,请移步问题聚集区一览~