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
:STARTEcho.
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
8888your 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

ngrok服务器搭建和4种客户端使用方法相关推荐

  1. ngrok服务器搭建流程

    ngrok服务器搭建流程 微信开发内网测试问题一直是一个困扰开发者的问题,ngrok服务是一个很好的解决方案,网上有类似的工具比如小米球但是不稳定或收费,如果自己有一台公网上的centos服务器,可以 ...

  2. CentOS7 NGROK服务器搭建 无需域名

    CentOS7 NGROK服务器搭建 CentOS7 NGROK服务器搭建 无需域名 看到一些ngrok收费一月9元起,遂花了10元买了腾讯云服务https://curl.qcloud.com/lj0 ...

  3. 一分钟实现内网穿透(ngrok服务器搭建)

    简单来说内网穿透的目的是:让外网能访问你本地的应用,例如在外网打开你本地http://127.0.0.1指向的Web站点. 最近公司的花生壳到期了,要续费,发现价格一直在涨,都是5年以上的老用户,旗舰 ...

  4. 内网穿透(ngrok服务器搭建)

    转:https://blog.csdn.net/zhangguo5/article/details/77848658?utm_source=5ibc.net&utm_medium=referr ...

  5. 内网穿透-----ngrok服务器搭建

    一,需求与ngrok简介 1)需求 有时我们需要进行内网穿透,也就是说我们需要去访问和使用一些内网的机器:比方说,我在实验室有一台机器,而实验室的网络是内网(192.168.0.48),这个时候我想在 ...

  6. Centos 7 ngrok服务器搭建

    一.安装go和git git用来下载ngrok,go用来编译生成客户端和服务端 #安装git yum install -y git # 安装 Go 从官网下载:https://golang.org/d ...

  7. 内网穿透、反向代理(ngrok服务器搭建)

    内网穿透的目的是:让外网能访问你本地的应用,例如在外网打开你本地http://127.0.0.1指向的Web站点. 一.ngrok ngrok是一个反向代理,通过在公共的端点和本地运行的Web服务器之 ...

  8. 我的世界服务器键位显示怎么开,客户端设置方法 游戏键位及画面设置

    我的世界中国版客户端设置方法 1.键位更改 MC的操作键位多达数十个,在关键时刻按到对的键位,可以打出出其不意的效果,调整最适合自己的键位可以使你的操作行云流水 ①疾跑键:小游戏作为一个PVE,PVP ...

  9. ngrok服务器搭建_C/C++ Linux 后台服务器开发高级架构师学习知识路线总结

    前言: 小编也是从事c方面10多年的工作经验.今天跟大家分享一下我总结出来的一系列 C/C Linux后台服务器开发的学习路线.从Linux开发工程师-Linux后台开发工程师-Linux高级互联网架 ...

最新文章

  1. sock 文件方式控制宿主机_nginx与php-fpm通信的两种方式
  2. 新的MOVE结构,和在项目中实际的感受
  3. 深入学习Heritrix---解析CrawlController
  4. 触发器before和after的区别
  5. SparkWeb 编译
  6. C++11遍历map
  7. java spring redis_spring配置redis(xml+java方式)
  8. Go-Mutex互斥量
  9. 二级VB培训笔记07:通用对话框
  10. 自动化测试的概念及工具
  11. 【openjudge】 CDQZ challenge 4
  12. BZOJ 2243: [SDOI2011]染色(树链剖分)
  13. 一.反编译Apk得到Java源代码
  14. 7 个有趣的 Python 实战项目,超级适合练手
  15. background 与 background-image
  16. NYOJ 456 邮票分你一半
  17. 2022081班李亚楠20220926
  18. windows计算机锁屏的快捷键是什么,电脑锁屏快捷键是什么
  19. facebuilder免费版_FaceBuilder 2.1.1 For Blender 2.8x-2.9x脸头部照片建模纹理插件
  20. vue移动端下拉刷新组件、上拉加载组件

热门文章

  1. 事件驱动模型与IO多路复用
  2. 极域电子教室有哪些优势-电子教室
  3. 3DCAD图纸转2D(DXF)图纸通用解决方案文稿
  4. apple_如何找到您的Apple卡号
  5. Windows 如何打开DOS命令窗口 以及常用的DOS命令
  6. BalsamiqMockups3 原型制作工具使用笔记
  7. Unix道德经(英文版)
  8. 正则表达式,Re模块函数 学习笔记之二
  9. 华硕天选1代 R9 4900H 2060 装载oem系统
  10. 2013全国计算机一级考试,2013全国计算机等级考试一级试题及讲解