ngrok服務器搭建和4種客戶端使用方法

ngrok的作用和原理可以網上自行搜索查閱。

 

環境如下:

服務器 aliyun centos7.2

域名 ithinkcry.cn

客戶端 windows 和 樹莓派

 

安裝步驟如下:

 

目錄

Go

Git 

OpenSSL

編譯ngrok

服務端:

客戶端:

windows64位的客戶端

linux客戶端

arm_linux客戶端

mac客戶端

nginx

啓動

服務端

客戶端

windows客戶端  

linux客戶端 

錯誤


 

 

 

 

Go


安裝go環境 yum install go
查看go安裝情況

[root@jiba ~]# go version
go version go1.11.5 linux/amd64


官方要求go的版本必須是1.1+

Git 


下載ngrok源碼到服務器上(確保服務器上已經安裝git)

[root@jiba zzj]# cd ngrokcode/
[root@jiba ngrokcode]# git clone https://github.com/inconshreveable/ngrok.git
Cloning into 'ngrok'...
remote: Enumerating objects: 2732, done.
remote: Total 2732 (delta 0), reused 0 (delta 0), pack-reused 2732
Receiving objects: 100% (2732/2732), 665.38 KiB | 124.00 KiB/s, done.
Resolving deltas: 100% (1298/1298), done.


OpenSSL


使用openssl 生成ngrok的證書
我的域名是ithinck.cn,我是用的ngrok地址是ngrok.ithinkcry.cn,所以此處domain的地址是ngrok.ithinkcry.cn

[root@jiba ngrok]# pwd
/home/zzj/ngrokcode/ngrok

[root@jiba ngrok]# openssl
OpenSSL> genrsa -out base.key 2048
Generating RSA private key, 2048 bit long modulus
................................................................+++
...........................................+++
e is 65537 (0x10001)
OpenSSL> req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=ngrok.ithinkcry.cn" -out base.pem
OpenSSL> genrsa -out server.key 2048
Generating RSA private key, 2048 bit long modulus
...........................................................................................+++
........................+++
e is 65537 (0x10001)
OpenSSL> req -new -key server.key -subj "/CN=ngrok.ithinkcry.cn" -out server.csr
OpenSSL> x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
Signature ok
subject=/CN=ngrok.ithinkcry.cn
Getting CA Private Key
OpenSSL> exit

查看生成的證書文件  base.key base.pem base.srl server.crt server.csr server.key

[root@jiba ngrok]# pwd
/home/zzj/ngrokcode/ngrok
[root@jiba ngrok]# ll
total 56
drwxr-xr-x 4 root root 4096 Sep 16 10:46 assets
-rw-r--r-- 1 root root 1679 Sep 16 10:58 base.key
-rw-r--r-- 1 root root 1119 Sep 16 11:03 base.pem
-rw-r--r-- 1 root root   17 Sep 16 11:04 base.srl
drwxr-xr-x 2 root root 4096 Sep 16 10:46 contrib
-rw-r--r-- 1 root root  199 Sep 16 10:46 CONTRIBUTORS
drwxr-xr-x 2 root root 4096 Sep 16 10:46 docs
-rw-r--r-- 1 root root  551 Sep 16 10:46 LICENSE
-rw-r--r-- 1 root root 1433 Sep 16 10:46 Makefile
-rw-r--r-- 1 root root 2725 Sep 16 10:46 README.md
-rw-r--r-- 1 root root 1001 Sep 16 11:04 server.crt
-rw-r--r-- 1 root root  903 Sep 16 11:04 server.csr
-rw-r--r-- 1 root root 1679 Sep 16 11:03 server.key
drwxr-xr-x 3 root root 4096 Sep 16 10:46 src

複製生成的證書到assets文件夾下
ngrok通過bindata將ngrok源碼目錄下的assets目錄(資源文件)打包到可執行文件(ngrokd和ngrok)中 去,assets/client/tls和assets/server/tls下分別存放着用於ngrok和ngrokd的默認證書文件,我們需要將它們替換成我們自己生成的:(因此這一步務必放在編譯可執行文件之前)

[root@jiba ngrok]# pwd
/home/zzj/ngrokcode/ngrok
[root@jiba ngrok]# cp base.pem assets/client/tls/ngrokroot.crt
cp: overwrite ‘assets/client/tls/ngrokroot.crt’?  y
[root@jiba ngrok]# cp server.crt assets/server/tls/snakeoil.crt
cp: overwrite ‘assets/server/tls/snakeoil.crt’? y
[root@jiba ngrok]# cp server.key assets/server/tls/snakeoil.key
cp: overwrite ‘assets/server/tls/snakeoil.key’? y

編譯ngrok


服務端:

在ngrok目錄下執行如下命令,編譯ngrokd:

[root@jiba ngrok]# pwd
/home/zzj/ngrokcode/ngrok
[root@jiba ngrok]# make release-server
GOOS="" GOARCH="" go get github.com/jteeuwen/go-bindata/go-bindata
bin/go-bindata -nomemcopy -pkg=assets -tags=release \
        -debug=false \
        -o=src/ngrok/client/assets/assets_release.go \
        assets/client/...
bin/go-bindata -nomemcopy -pkg=assets -tags=release \
        -debug=false \
        -o=src/ngrok/server/assets/assets_release.go \
        assets/server/...
go get -tags 'release' -d -v ngrok/...
github.com/inconshreveable/mousetrap (download)
github.com/rcrowley/go-metrics (download)
Fetching https://gopkg.in/inconshreveable/go-update.v0?go-get=1
Parsing meta tags from https://gopkg.in/inconshreveable/go-update.v0?go-get=1 (status code 200)
get "gopkg.in/inconshreveable/go-update.v0": found meta tag get.metaImport{Prefix:"gopkg.in/inconshreveable/go-update.v0", VCS:"git", RepoRoot:"https://gopkg.in/inconshreveable/go-update.v0"} at https://gopkg.in/inconshreveable/go-update.v0?go-get=1
gopkg.in/inconshreveable/go-update.v0 (download)
github.com/kardianos/osext (download)
github.com/kr/binarydist (download)
Fetching https://gopkg.in/inconshreveable/go-update.v0/check?go-get=1
Parsing meta tags from https://gopkg.in/inconshreveable/go-update.v0/check?go-get=1 (status code 200)
get "gopkg.in/inconshreveable/go-update.v0/check": found meta tag get.metaImport{Prefix:"gopkg.in/inconshreveable/go-update.v0", VCS:"git", RepoRoot:"https://gopkg.in/inconshreveable/go-update.v0"} at https://gopkg.in/inconshreveable/go-update.v0/check?go-get=1
get "gopkg.in/inconshreveable/go-update.v0/check": verifying non-authoritative meta tag
Fetching https://gopkg.in/inconshreveable/go-update.v0?go-get=1
Parsing meta tags from https://gopkg.in/inconshreveable/go-update.v0?go-get=1 (status code 200)
Fetching https://gopkg.in/yaml.v1?go-get=1
Parsing meta tags from https://gopkg.in/yaml.v1?go-get=1 (status code 200)
get "gopkg.in/yaml.v1": found meta tag get.metaImport{Prefix:"gopkg.in/yaml.v1", VCS:"git", RepoRoot:"https://gopkg.in/yaml.v1"} at https://gopkg.in/yaml.v1?go-get=1
gopkg.in/yaml.v1 (download)
github.com/inconshreveable/go-vhost (download)
github.com/alecthomas/log4go (download)
github.com/nsf/termbox-go (download)
github.com/mattn/go-runewidth (download)
github.com/gorilla/websocket (download)
go install -tags 'release' ngrok/main/ngrokd

編譯完畢後可以看到生成了bin文件夾,裏面有服務端的執行文件

[root@jiba ngrok]# pwd
/home/zzj/ngrokcode/ngrok
[root@jiba ngrok]# ll
total 60
drwxr-xr-x 4 root root 4096 Sep 16 10:46 assets
-rw-r--r-- 1 root root 1679 Sep 16 10:58 base.key
-rw-r--r-- 1 root root 1119 Sep 16 11:03 base.pem
-rw-r--r-- 1 root root   17 Sep 16 11:04 base.srl
drwxr-xr-x 2 root root 4096 Sep 16 11:29 bin
drwxr-xr-x 2 root root 4096 Sep 16 10:46 contrib
-rw-r--r-- 1 root root  199 Sep 16 10:46 CONTRIBUTORS
drwxr-xr-x 2 root root 4096 Sep 16 10:46 docs
-rw-r--r-- 1 root root  551 Sep 16 10:46 LICENSE
-rw-r--r-- 1 root root 1433 Sep 16 10:46 Makefile
-rw-r--r-- 1 root root 2725 Sep 16 10:46 README.md
-rw-r--r-- 1 root root 1001 Sep 16 11:04 server.crt
-rw-r--r-- 1 root root  903 Sep 16 11:04 server.csr
-rw-r--r-- 1 root root 1679 Sep 16 11:03 server.key
drwxr-xr-x 5 root root 4096 Sep 16 11:28 src
[root@jiba ngrok]# cd bin/
[root@jiba bin]# ll
total 11800
-rwxr-xr-x 1 root root 2772750 Sep 16 11:28 go-bindata
-rwxr-xr-x 1 root root 9308318 Sep 16 11:29 ngrokd
[root@jiba bin]#

客戶端:


4個選項
GOOS=linux GOARCH=amd64 make release-client #Linux  64位環境
GOOS=windows GOARCH=amd64 make release-client #windows 64位環境
GOOS=linux GOARCH=arm make release-client #Linux arm環境

GOOS=darwin GOARCH=amd64 make release-client #Mac 環境

windows64位的客戶端

[root@jiba ngrok]# pwd
/home/zzj/ngrokcode/ngrok
[root@jiba ngrok]# GOOS=windows GOARCH=amd64 make release-client
bin/go-bindata -nomemcopy -pkg=assets -tags=release \
        -debug=false \
        -o=src/ngrok/client/assets/assets_release.go \
        assets/client/...
bin/go-bindata -nomemcopy -pkg=assets -tags=release \
        -debug=false \
        -o=src/ngrok/server/assets/assets_release.go \
        assets/server/...
go get -tags 'release' -d -v ngrok/...
go install -tags 'release' ngrok/main/ngrok
[root@jiba ngrok]#

可以看到在bin文件下多了一個windows_amd64文件夾,裏面有windows客戶端的啓動文件

[root@jiba ngrok]# ll
total 60
drwxr-xr-x 4 root root 4096 Sep 16 10:46 assets
-rw-r--r-- 1 root root 1679 Sep 16 10:58 base.key
-rw-r--r-- 1 root root 1119 Sep 16 11:03 base.pem
-rw-r--r-- 1 root root   17 Sep 16 11:04 base.srl
drwxr-xr-x 3 root root 4096 Sep 16 11:34 bin
drwxr-xr-x 2 root root 4096 Sep 16 10:46 contrib
-rw-r--r-- 1 root root  199 Sep 16 10:46 CONTRIBUTORS
drwxr-xr-x 2 root root 4096 Sep 16 10:46 docs
-rw-r--r-- 1 root root  551 Sep 16 10:46 LICENSE
-rw-r--r-- 1 root root 1433 Sep 16 10:46 Makefile
-rw-r--r-- 1 root root 2725 Sep 16 10:46 README.md
-rw-r--r-- 1 root root 1001 Sep 16 11:04 server.crt
-rw-r--r-- 1 root root  903 Sep 16 11:04 server.csr
-rw-r--r-- 1 root root 1679 Sep 16 11:03 server.key
drwxr-xr-x 5 root root 4096 Sep 16 11:28 src
[root@jiba ngrok]# cd bin/
[root@jiba bin]# ll
total 11804
-rwxr-xr-x 1 root root 2772750 Sep 16 11:28 go-bindata
-rwxr-xr-x 1 root root 9308318 Sep 16 11:29 ngrokd
drwxr-xr-x 2 root root    4096 Sep 16 11:34 windows_amd64
[root@jiba bin]# cd windows_amd64/
[root@jiba windows_amd64]# ll
total 11248
-rwxr-xr-x 1 root root 11515904 Sep 16 11:34 ngrok.exe
[root@jiba windows_amd64]#

linux客戶端

[root@jiba ngrok]# GOOS=linux GOARCH=amd64 make release-client #Linux
bin/go-bindata -nomemcopy -pkg=assets -tags=release \
        -debug=false \
        -o=src/ngrok/client/assets/assets_release.go \
        assets/client/...
bin/go-bindata -nomemcopy -pkg=assets -tags=release \
        -debug=false \
        -o=src/ngrok/server/assets/assets_release.go \
        assets/server/...
go get -tags 'release' -d -v ngrok/...
go install -tags 'release' ngrok/main/ngrok

可以看到bin目錄下多出的一個文件[ngrok]就是

[root@jiba bin]# ll
total 47948
-rwxr-xr-x 1 root root  2772750 Sep 16 11:28 go-bindata
drwxr-xr-x 2 root root     4096 Sep 30 13:34 linux_arm //這文件夾裏面是arm環境下的linux的客戶端文件(樹莓派之類的arm服務器)
-rwxr-xr-x 1 root root 11837754 Sep 30 13:33 ngrok //這個是linux的客戶端文件
-rwxr-xr-x 1 root root  9308318 Sep 16 14:46 ngrokd
-rw-r--r-- 1 root root 25151717 Sep 30 13:48 ngrok.log
-rwxr-xr-x 1 root root      301 Sep 16 14:39 start.sh
drwxr-xr-x 2 root root     4096 Sep 16 14:47 windows_amd64

 

arm_linux客戶端

[root@jiba ngrok]# GOOS=linux GOARCH=arm make release-client #Linux
bin/go-bindata -nomemcopy -pkg=assets -tags=release \
        -debug=false \
        -o=src/ngrok/client/assets/assets_release.go \
        assets/client/...
bin/go-bindata -nomemcopy -pkg=assets -tags=release \
        -debug=false \
        -o=src/ngrok/server/assets/assets_release.go \
        assets/server/...
go get -tags 'release' -d -v ngrok/...
go install -tags 'release' ngrok/main/ngrok

進入bin目錄下,

[root@jiba bin]# ll
total 47948
-rwxr-xr-x 1 root root  2772750 Sep 16 11:28 go-bindata
drwxr-xr-x 2 root root     4096 Sep 30 13:34 linux_arm //這文件夾裏面是arm環境下的linux的客戶端文件(樹莓派之類的arm服務器)
-rwxr-xr-x 1 root root 11837754 Sep 30 13:33 ngrok //這個是linux的客戶端文件
-rwxr-xr-x 1 root root  9308318 Sep 16 14:46 ngrokd
-rw-r--r-- 1 root root 25151717 Sep 30 13:48 ngrok.log
-rwxr-xr-x 1 root root      301 Sep 16 14:39 start.sh
drwxr-xr-x 2 root root     4096 Sep 16 14:47 windows_amd64

注意


需要注意的是,在編譯生成的linux客戶端 和 arm_linux 客戶端 在複製到別的linux服務器上以後,不可以直接執行
需要添加執行權限

chmowd a+x ngrok


然後可以使用 ./ngrok xxxxxxxxx 啓動

 

mac客戶端

命令是 GOOS=darwin GOARCH=amd64 make release-client

在ngrok目錄下執行:

[root@jiba ngrok]# ll
total 60
drwxr-xr-x 4 root root 4096 Sep 16 10:46 assets
-rw-r--r-- 1 root root 1675 Sep 16 14:42 base.key
-rw-r--r-- 1 root root 1119 Sep 16 14:43 base.pem
-rw-r--r-- 1 root root   17 Sep 16 14:44 base.srl
drwxr-xr-x 4 root root 4096 Oct 11 23:19 bin
drwxr-xr-x 2 root root 4096 Sep 16 10:46 contrib
-rw-r--r-- 1 root root  199 Sep 16 10:46 CONTRIBUTORS
drwxr-xr-x 2 root root 4096 Sep 16 10:46 docs
-rw-r--r-- 1 root root  551 Sep 16 10:46 LICENSE
-rw-r--r-- 1 root root 1433 Sep 16 10:46 Makefile
-rw-r--r-- 1 root root 2725 Sep 16 10:46 README.md
-rw-r--r-- 1 root root 1001 Sep 16 14:44 server.crt
-rw-r--r-- 1 root root  903 Sep 16 14:44 server.csr
-rw-r--r-- 1 root root 1679 Sep 16 14:43 server.key
drwxr-xr-x 5 root root 4096 Sep 16 11:28 src
#開始執行
[root@jiba ngrok]# GOOS=darwin GOARCH=amd64 make release-client
bin/go-bindata -nomemcopy -pkg=assets -tags=release \
        -debug=false \
        -o=src/ngrok/client/assets/assets_release.go \
        assets/client/...
bin/go-bindata -nomemcopy -pkg=assets -tags=release \
        -debug=false \
        -o=src/ngrok/server/assets/assets_release.go \
        assets/server/...
go get -tags 'release' -d -v ngrok/...
go install -tags 'release' ngrok/main/ngrok
#執行完畢

執行完畢後可以在bin目錄下看到生成的文件夾darwin_amd64,裏面有文件ngrok執行文件

[root@jiba ngrok]# cd bin/
[root@jiba bin]# ll
total 65900
drwxr-xr-x 2 root root     4096 Oct 14 16:05 darwin_amd64
-rwxr-xr-x 1 root root  2772750 Sep 16 11:28 go-bindata
drwxr-xr-x 2 root root     4096 Oct 11 23:19 linux_arm
-rwxr-xr-x 1 root root 11837754 Oct 11 21:21 ngrok
-rwxr-xr-x 1 root root  9308318 Sep 16 14:46 ngrokd
-rw-r--r-- 1 root root 43535911 Oct 14 16:05 ngrok.log
-rwxr-xr-x 1 root root      301 Sep 16 14:39 start.sh
drwxr-xr-x 2 root root     4096 Oct 11 23:18 windows_amd64
[root@jiba bin]# ^C
[root@jiba bin]# ^C
[root@jiba bin]# cd darwin_amd64/
[root@jiba darwin_amd64]# ls
ngrok

 


nginx


nginx.conf配置

server {
    listen       80;
    server_name  *.ngrok.ithinkcry.cn;
    location / {
        proxy_pass http://172.26.88.76:18015;
        proxy_set_header Host $host:18015;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_redirect off;
        client_max_body_size 10m;
        client_body_buffer_size 128k;
        proxy_connect_timeout 90;
        proxy_read_timeout 90;
        proxy_buffer_size 4k;
        proxy_buffers 6 128k;
        proxy_busy_buffers_size 256k;
        proxy_temp_file_write_size 256k;
    }
    location ~ .*\.(gif|jpg|png|bmp|swf)$ {
        proxy_pass  http://172.26.88.76:18015;
        proxy_set_header    Host    $host:18015;
        expires 30d;
    }
    location ~ .*\.(js|css)?$ {
        proxy_pass  http://172.26.88.76:18015;
        proxy_set_header    Host    $host:18015;
        expires 1d;
    }
}

服務器端口配置

服務器開啓端口

firewall-cmd --zone=public --add-port=4443/tcp --permanent
firewall-cmd --reload

阿里雲安全組

域名解析配置

*.ngrok.ithinkcry.cn

ngrok.ithinkcry.cn

啓動


服務端

 

[root@jiba bin]# ll
total 11804
-rwxr-xr-x 1 root root 2772750 Sep 16 11:28 go-bindata
-rwxr-xr-x 1 root root 9308318 Sep 16 11:29 ngrokd
drwxr-xr-x 2 root root    4096 Sep 16 11:34 windows_amd64

手動啓動

[root@jiba bin]# ./ngrokd -domain="ngrok.ithinkcry.cn" -httpAddr=":18015" -httpsAddr=":18014" > ngrok.log &

編寫腳本:

[root@jiba ngrok]# touch start.sh
[root@jiba ngrok]# vim start.sh

填寫腳本內容

/home/zzj/ngrokcode/ngrok/bin/ngrokd  -tlsKey=/home/zzj/ngrokcode/ngrok/assets/server/tls/snakeoil.key -tlsCrt=/home/zzj/ngrokcode/ngrok/assets/server/tls/snakeoil.crt -domain="ngrok.ithinkcry.cn" -httpAddr=":18015" -httpsAddr=":18014" -tunnelAddr=":4443" > /home/zzj/ngrokcode/ngrok/bin/ngrok.log &

保存後,更改權限

[root@jiba ngrok]# chmod a+x start.sh

啓動

[root@jiba bin]# ./start.sh

客戶端

windows客戶端  


客戶端是windows,把之前生成的ngrok.exe複製到windows上

[root@jiba windows_amd64]# pwd
/home/zzj/ngrokcode/ngrok/bin/windows_amd64
[root@jiba windows_amd64]# ls
ngrok.exe

配置啓動文件,或者直接手工啓動:
文件ngrok.cfg 內容,端口就是-tunnelAddr 的端口,也是阿里雲服務器安全組開啓的端口

server_addr: "ngrok.ithinkcry.cn:4443"
trust_host_root_certs: false

啓動文件,可以自動化設置的bat文件,內容:

@echo OFF
color 0a
Title Ngrok啓動工具 
Mode con cols=109 lines=30
:START

Echo.
echo.
echo.
:TUNNEL
Echo               輸入需要啓動的域名前綴,如“aaa” ,即分配給你的穿透域名爲:“aaa.ngrok.ithinkcry.cn”
ECHO.
ECHO.
ECHO.
set /p clientid=   請輸入前綴:
echo.
set /p port=   請輸入端口:
echo.
ngrok -config=ngrok.cfg -subdomain %clientid% %port%
PAUSE
goto TUNNEL

輸入三級域名test 和對應的端口號8080

啓動成功


或者手動啓動:把本機的8080端口映射到服務器ngrok上面的test.ngrok.ithinkcry.cn去

ngrok -config=ngrok.cfg -subdomain test 8080

此時訪問test.ngrok.ithinkcry.cn 就相當於訪問本機的服務localhost:8080

linux客戶端 


在編譯生成的linux客戶端 和 arm_linux 客戶端 在複製到別的linux服務器上以後,不可以直接執行。
需要添加執行權限:
chmowd a+x ngrok
然後可以使用 ./ngrok xxxxxxxxx 啓動

在樹莓派上啓動

root@raspberrypi:/home/pi/files/ngrokcode/linux_arm# ls -l
total 10112
-rwxr-xr-x 1 pi   pi   10346475 Sep 30 13:34 ngrok
-rw-r--r-- 1 root root       70 Oct 11 23:43 ngrok.cfg
-rwxr-xr-x 1 root root      326 Oct 12 00:01 start.sh

配置文件ngrok.cfg

server_addr: "ngrok.ithinkcry.cn:4443"
trust_host_root_certs: false

啓動腳本start.sh

root@raspberrypi:/home/pi/files/ngrokcode/linux_arm# touch start.sh
root@raspberrypi:/home/pi/files/ngrokcode/linux_arm# chmod a+x start.sh
root@raspberrypi:/home/pi/files/ngrokcode/linux_arm# vim start.sh
root@raspberrypi:/home/pi/files/ngrokcode/linux_arm# cat ./start.sh

start.sh腳本內容如下:

echo " "
echo "Type in the Domain Name,like xxx represents xxx.ngrok.ithinkcry.cn "
read domainname
echo " "
echo "Type in the port of your application "
read appport
echo " "
echo your domain name is "$domainname" appport is "$appport"



./ngrok -log ./client.log -config ./ngrok.cfg -subdomain "$domainname" "$appport"

啓動

root@raspberrypi:/home/pi/files/ngrokcode/linux_arm# ./start.sh
#我輸入的子域名是arm,就是使用arm.ngrok.ithinkcry.cn,可以隨意設置
Type in the Domain Name,like xxx represents xxx.ngrok.ithinkcry.cn
arm
#本機對應開啓的應用的端口是8888,可以隨意設置
Type in the port of your application
8888

your domain name is arm appport is 8888

查看client.log日誌

[2019/10/12 00:09:52 CST] [INFO] (ngrok/log.Info:112) Reading configuration file ./ngrok.cfg
[2019/10/12 00:09:52 CST] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [client] Trusting root CAs: [assets/client/tls/ngrokroot.crt]
[2019/10/12 00:09:52 CST] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [view] [web] Serving web interface on 127.0.0.1:4040
[2019/10/12 00:09:52 CST] [INFO] (ngrok/log.Info:112) Checking for update
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [view] [term] Waiting for update
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [ctl:8e6d426] New connection to: 47.92.105.174:4443
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [ctl:8e6d426] Writing message: {"Type":"Auth","Payload":{"Version":"2","MmVersion":"1.7","User":"","Password":"","OS":"linux","Arch":"arm","ClientId":""}}
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [ctl:8e6d426] Waiting to read message
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [ctl:8e6d426] Reading message with length: 120
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [ctl:8e6d426] Read message {"Type":"AuthResp","Payload":{"Version":"2","MmVersion":"1.7","ClientId":"e8dc0d3fed22fc409d1f99680e727e84","Error":""}}
[2019/10/12 00:09:52 CST] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [client] Authenticated with server, client id: e8dc0d3fed22fc409d1f99680e727e84
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [ctl:8e6d426] Writing message: {"Type":"ReqTunnel","Payload":{"ReqId":"1f029896a698059e","Protocol":"https+http","Hostname":"","Subdomain":"arm","HttpAuth":"","RemotePort":0}}
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [ctl:8e6d426] Waiting to read message
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [ctl:8e6d426] Reading message with length: 32
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [ctl:8e6d426] Read message {"Type":"ReqProxy","Payload":{}}
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [ctl:8e6d426] Waiting to read message
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [view] [term] Waiting for update
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [ctl:8e6d426] Reading message with length: 134
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [ctl:8e6d426] Read message {"Type":"NewTunnel","Payload":{"ReqId":"1f029896a698059e","Url":"https://arm.ngrok.ithinkcry.cn:18014","Protocol":"https","Error":""}}
[2019/10/12 00:09:52 CST] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [client] Tunnel established at https://arm.ngrok.ithinkcry.cn:18014
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [ctl:8e6d426] Waiting to read message
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [ctl:8e6d426] Reading message with length: 132
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [ctl:8e6d426] Read message {"Type":"NewTunnel","Payload":{"ReqId":"1f029896a698059e","Url":"http://arm.ngrok.ithinkcry.cn:18014","Protocol":"http","Error":""}}
[2019/10/12 00:09:52 CST] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [client] Tunnel established at http://arm.ngrok.ithinkcry.cn:18014
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [ctl:8e6d426] Waiting to read message
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [view] [term] Waiting for update
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [view] [term] Waiting for update
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [pxy:6d62c42d] New connection to: 47.92.105.174:4443
[2019/10/12 00:09:52 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [pxy:6d62c42d] Writing message: {"Type":"RegProxy","Payload":{"ClientId":"e8dc0d3fed22fc409d1f99680e727e84"}}
[2019/10/12 00:09:53 CST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [pxy:6d62c42d] Waiting to read message
[2019/10/12 00:09:55 CST] [INFO] (ngrok/log.Info:112) No update available

啓動成功後的畫面

 

 

 

錯誤

期間如果遇到tls: bad certificate 這種錯誤,可能是在設置openssl的時候出錯了,或者服務端的地址和客戶端ngrok.cfg中的地址不一樣。
我的解決辦法是,重新設置openssl,重新生成一遍,使用新的服務端和新的客戶端,就可以了。

參考資料:
https://www.pocketdigi.com/20161011/1490.html
https://www.jianshu.com/p/cd937631a88b
https://my.oschina.net/djsoft/blog/1786635
https://aotu.io/notes/2016/02/19/ngrok/index.html
https://blog.csdn.net/ZHJ123CSDN/article/details/87886424
https://blog.csdn.net/u010444106/article/details/80457985
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章