(假設伺服器位址為: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