(假设服务器地址为:123.123.123.123)
1. 前置条件
1) 安装go语言
# apt-get install golang
2) 安装git
#apt-get install git
或
# yuminstall git
2. 将ngrok源代码克隆回本地
1) 创建ngrok的目录
# mkdir ngrok
2) 源码克隆
# git clone https://github.com/inconshreveable/ngrok.git ngrok
3. 设置环境变量
1) ngrok域名解析加入环境变量
# vi /etc/profile
在后面加入
export NGROK_DOMAIN="portref.123.123.123.123"
2) 环境变量生效
# source /etc/profile
4. 生成证书
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 server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
5. 拷贝证书并改名
\cp -f rootCA.pem assets/client/tls/ngrokroot.crt
\cp -f server.crt assets/server/tls/snakeoil.crt
\cp -f server.key assets/server/tls/snakeoil.key
6. 生成客户端和服务端
GOOS=windows GOARCH=386 make release-server
GOOS=windows GOARCH=386 make release-client
GOOS=linux GOARCH=386 make release-server
GOOS=linux GOARCH=386 make release-client
7. bin下创建启动脚本
# vi startup.sh
在脚本中填写
#!/bin/bash
#ngrok server startup shell
addr=portref.123.123.123.123
http=8081
https=8082
port=4443
echo '************************************************************************************************************'
echo * 父级域名:$addr
echo * http端口:$http
echo * https端口:$https
echo * ngrok监听端口:$port
echo '************************************************************************************************************'
nohup ./linux_386/ngrokd -domain="$addr" -httpAddr=":$http" -httpsAddr=":$https" -tunnelAddr=":$port" > ../listen.log &
8. 启动ngrok
# sh startup.sh
9. 客户端
1) 客户端拷贝
在需要内网穿透的机器上,创建文件夹ngrok,把生成的客户端拷贝到文件夹内
2) 创建配置文件
新建ngrok.cfg文件,文件内设置如下内容:
server_addr: "123.123.123.123:443"
trust_host_root_certs: false
tunnels:
svn:
subdomain: "svn"
proto:
https: "8443"
ftpI:
remote_port: 22221
subdomain: "ftp"
proto:
tcp: "21"
ftpO:
remote_port: 46637
subdomain: "ftp"
proto:
tcp: "46637"
3) 创建启动脚本
新建startup.bat文件,文件内设置如下内容:
start /b ngrok.exe-config ngrok.cfg start desktop ftpI ftpO