安装gcc和git(下载ngrok源码)

yum install gcc -y

yum install git -y

yum install -y mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386

yum update -y nss curl libcurl

yum -y install gcc automake autoconf libtool make

设置go环境

cd /usr/local

wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz

tar -zxvf go1.11.linux-amd64.tar.gz

环境变量(vim /etc/profile)

export GOROOT=/usr/local/go

export PATH=$GOROOT/bin:$PATH

export NGROK_DOMAIN=ngrok.your.com

生效

source /etc/profile
——————————————

搭建环境:阿里云Centos7
1、更新Git(高于1.7即可)
查看当前git版本:git --version
详见另一篇博客《Linux安装最新版git》
2、安装go
CentOS7用户:
yum install -y mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386
其他CentOS用户:
没有Go,只有虚拟机交叉编译,找台CentOS7的服务器编译GO。
检查Go安装成功与否
go version
3、下载ngrok
返回git的上层目录:cd ..
git clone https://github.com/inconshreveable/ngrok.git #不是所有者使用HTTPS方式或者SSH方式
如果报错: git clone: fatal: Unable to find remote helper for 'https'
由于 Git configure 配置时没有设定 --with-curl --with-expat 造成
CentOS使用yum安装curl开发相关库后重新配置编译git即可:
命令:yum install libcurl-devel 随后cd到git目录make && make install等等...
4、生成自签名证书,在生成证书时需要一个解析到服务器上的主域名,以"zxfngrok.zxiaofan.com"为例:
cd ngrok
NGROK_DOMAIN="zxfngrok.zxiaofan.com"
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 device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
将新生成的证书,替换掉assets/client/tls下的证书
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key
5、编译ngrok服务端:
cd到ngrok目录
//指定环境变量位64位linux版本
GOOS=linux GOARCH=amd64 #如果是32位系统,这里 GOARCH=386

make release-server
如果报错:-bash: make: command not found
因为安装系统的时候使用的是最小化mini安装,系统没有安装make、vim等常用命令,直接yum安装即可:yum -y install gcc automake autoconf libtool make
编译会很慢(依赖git),耐心等待
这里会等很久:GOOS="" GOARCH="" go get github.com/jteeuwen/go-bindata/go-bindata
提速方案:翻墙or更改hosts(vim /etc/hosts,maybe需要reboot)
如果报错:fatal: unable to access 'https://github.com/alecthomas/log4go/'
或其他下载失败,多半是由于GFW,重来一次获取就OK了。
正常情况下,在ngrok/bin/下会有ngrokd文件,这就是我们的服务端了。

6、编译客户端(go >= 1.6):
cd到ngrok目录
(1)若是客户端使用与服务器相同系统可直接使用 make release-client指令。
(2)若是不同系统,则需要通过go中的make.bash手工编译出跨编译工具。
在$GOROOT/src目录下找到make.bash文件,通过设置GOOS和GOARCH来完成生成跨编译工具:
#linux
make release-client
#windows
GOOS=windows GOARCH=amd64 make release-client
#mac
GOOS=darwin GOARCH=amd64 make release-client
正常情况下,在cd bin/windows_amd64/下,有刚生成的ngrok.exe,下载到windows备用。

7、使用
启动服务端:
cd 到服务端目录ngrok/,
可以指定证书,域名,端口号来启动:
./bin/ngrokd -tlsKey=device.key -tlsCrt=device.crt -domain="csdnnrgok.zxiaofan.com" -httpAddr=":8234" -httpsAddr=":8334" -tunnelAddr=":443"

如需后台运行,指令改为:nohup./bin/ngrokd -tlsKey=device.key -tlsCrt=device.crt -domain="csdnnrgok.zxiaofan.com" -httpAddr=":8234" -httpsAddr=":8334" -tunnelAddr=":443"&

如果需要开机自启动,参考另一篇博客《CentOS 7将linux服务加入系统启动 systemd service》

可新建start.sh放在ngrok目录,欲启动ngrok,执行该脚本即可。
-----
# start.sh
cd /root/ngrok/
nohup bin/ngrokd -tlsKey=device.key -tlsCrt=device.crt -domain=zxfngrok.zxiaofan.com -httpAddr=:8234-httpsAddr=:8334-tunnelAddr=:443 &
-----
如果执行命令后出现>,则可能命令有误,比如域名缺少引号等。
如果出现panic: open device.crt: no such file or directory,则指令有误,修改device.crt路径即可。
出现以下内容则启动成功:
[00:46:10 CST 2016/12/30] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry] [tun] No affinity cache specified
[00:46:10 CST 2016/12/30] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds
[00:46:10 CST 2016/12/30] [INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:8234
[00:46:10 CST 2016/12/30] [INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:8334
[00:46:10 CST 2016/12/30] [INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:443

启动客户端:
注意:server_addr的端口应和服务端启动命令tunnelAddr的一致。

将ngrok.exe放在D:\ngrok,并且在D:\ngrok编辑配置文件ngrok.cfg
server_addr: "zxfngrok.zxiaofan.com:443"
trust_host_root_certs: false
打开windows控制台win+r ,进入D:\ngrok,执行
./ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=test 8080

亦可做其他定义:
server_addr: "zxfngrok.zxiaofan.com:4443"
trust_host_root_certs: false
tunnels:
ssh:
remote_port: 11111
proto:
tcp: "127.0.0.1:22"
mstsc:
remote_port: 22222
proto:
tcp: "127.0.0.1:3389"
web:
subdomain: "test"
proto:
http: 80
远程桌面:ngrok -config=ngrok.cfg start ssh web mstsc

出现以下内容则客户端启动成功:
Tunnel Status online
Version 1.7/1.7
Forwarding http://test.zxfngrok.zxiaofan.com:8234-> 127.0.0.1:80
Forwarding tcp://zxfngrok.zxiaofan.com:11111 -> 127.0.0.1:22
Forwarding tcp://zxfngrok.zxiaofan.com:22222 -> 127.0.0.1:3389
Web Interface 127.0.0.1:4040
# Conn 0
Avg Conn Time 0.00ms

注意:
1、客户端ngrok.cfg中server_addr后域名必须严格与-domain以及证书中的NGROK_BASE_DOMAIN相同,否则Server端就会出现如下错误日志:
Failed to read message: remote error: bad certificate
2、如果客户端注册相同的域名,将会失败,提示已被注册。

可用nssm.exe将ngrok注册为服务,开机自启后台运行。详见另一篇博客《nssm注册windows服务》。
有任何问题可到csdn.zxiaofan.com讨论。
参考:
http://www.jianshu.com/p/d0b00d233d09
http://www.cnblogs.com/pwenlee/p/5302880.html
欢迎个人转载,但须在文章页面明显位置给出原文连接;
未经作者同意必须保留此段声明、不得随意修改原文、不得用于商业用途,否则保留追究法律责任的权利。
 
【 CSDN 】:csdn.zxiaofan.com
【GitHub】:github.zxiaofan.com

原文链接:https://blog.csdn.net/u010887744/article/details/53957683

-------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------

什么是Ngrok

Ngrok是一款用go语言开发的开源软件,它是一个反向代理。通过在公共的端点和本地运行的Web服务器之间建立一个安全的通道。Ngrok可捕获和分析所有通道上的流量,便于后期分析和重放。

下图简述了Ngrok的原理

应用场景

用于对处在内网环境中,无外网IP的计算机的远程连接。

Ngrok可以做TCP端口转发,对于Linux可以将其映射到22端口进行SSH连接。Windows的远程桌面可以将其映射到3389端口来实现。同理,如果要做MySQL的远程连接,只需映射3306端口即可。

用作临时搭建网站并分配二级域名,可用作微信二次开发的本地调试。

微信公众平台二次开发时,服务器必须要能通过外网访问,而且必须是80接口。我们一般会在自己的电脑上写代码,但是由于电信运营商将80端口屏蔽了,甚至很多人通过无线路由器上网,根本就没有公网ip。在这种情况下,我们每次都要上传代码到服务器对微信公众平台进行接口调试,十分的不方便。而Ngrok可以将内网映射到一个公网地址,这样就完美的解决了我们的问题。

Ngrok官方为我们免费提供了一个服务器,我们只需要下载Ngrok客户端即可正常使用,但是后来官方的服务越来越慢,直到Ngrok官网被完全屏蔽。现在我们已经无法使用ngrok官方的服务器了。所以,接下来我们自行搭建属于自己的ngrok服务器,为自己提供方便快捷又稳定的服务,一劳永逸。

注意:ngrok.com 提供的服务是基于 ngrok 2.0,github 上目前只有 1.0 的源码,二者功能和命令有一些区别,用的时候别搞混了

编译ngrok

安装go get工具

 
  1. #ubuntu

  2. apt-get install build-essential golang mercurial git

  3. #centos

  4. yum install mercurial git bzr subversion  golang

  5. #git版本需要在1.7.9.5以上,如果不符合条件需要将git版本升级。

  6. yum --disablerepo=base,updates --enablerepo=rpmforge-extras update git

获取ngrok源码

 
  1. GOPATH=~/goproj

  2. mkdir ~/goproj/src/github.com/inconshreveable

  3. cd ~/goproj/src/github.com/inconshreveable

  4. #官方地址编译时要报错

  5. git clone https://github.com/inconshreveable/ngrok.git

  6. #请使用下面的地址,修复了无法访问的包地址

  7. git clone https://github.com/tutumcloud/ngrok.git ngrok

  8. export GOPATH=~/goproj/src/github.com/inconshreveable/ngrok

  9. 修改源代码中库引用的错误

  10. 由于google code的关闭,所以我们要把作者代码中的库引用地址修改一下

  11. 修改src/ngrok/log/logger.go文件

  12. log "code.google.com/p/log4go" 改为log "github.com/alecthomas/log4go"

  13. 注:最新github.com上的代码这个问题已修复

生成自签名证书

使用ngrok.com官方服务时,我们使用的是官方的SSL证书。自建ngrokd服务,我们需要生成自己的证书,并提供携带该证书的ngrok客户端。生成并替换源码里默认的证书,注意域名修改为你自己的。(之后编译出来的服务端客户端会基于这个证书来加密通讯,保证了安全性)

证书生成过程需要一个NGROK_DOMAIN。以ngrok官方随机生成的地址693c358d.ngrok.com为例,其NGROK_DOMAIN就是”ngrok.com”,如果你要提供服务的地址为”example.tunnel.imike.me”,那NGROK_BASE_DOMAIN就应该是”tunnel.imike.me”。

 
  1. cd ngrok

  2. NGROK_DOMAIN="tunnel.imike.me"

  3. openssl genrsa -out base.key 2048

  4. openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem

  5. openssl genrsa -out server.key 2048

  6. openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr

  7. openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt

执行完以上命令,在ngrok目录下就会新生成6个文件

 
  1. ls -lt                          

  2. 总用量 56

  3. -rw-r--r-- 1 root root  973 3月  23 11:23 server.crt

  4. -rw-r--r-- 1 root root   17 3月  23 11:23 base.srl

  5. -rw-r--r-- 1 root root  891 3月  23 11:23 server.csr

  6. -rw-r--r-- 1 root root 1675 3月  23 11:23 server.key

  7. -rw-r--r-- 1 root root 1115 3月  23 11:23 base.pem

  8. -rw-r--r-- 1 root root 1679 3月  23 11:23 base.key

Ngrok通过bindata将ngrok源码目录下的assets目录(资源文件)打包到可执行文件(ngrokd和ngrok)中去,assets/client/tls和assets/server/tls下分别存放着用于ngrok和ngrokd的默认证书文件,我们需要将它们替换成我们自己生成的(因此这一步务必放在编译可执行文件之前)

 
  1. cp base.pem assets/client/tls/ngrokroot.crt

  2. cp server.crt assets/server/tls/snakeoil.crt

  3. cp server.key assets/server/tls/snakeoil.key

编译Linux服务端和客户端

make release-server release-client

编译之后,就会在ngrok源码的bin目录下生成两个可执行文件:ngrokd、ngrok。其中ngrokd就是ngrok的服务端程序,ngrok就是ngrok的客户端程序。

编译Linux客户端

make release-client

编译window版本客户端

上述编译过程生成的服务端和客户端都是linux下的,不能在windows下用。如果想编译生成windows客户端,需要重新配置环境并编译。交叉编译过程如下:

 
  1. 进入go目录,进行环境配置

  2. cd  /usr/local/go/src/

  3. GOOS=windows GOARCH=amd64 CGO_ENABLED=0 ./make.bash  

  4. 进入ngrok目录重新编译

  5. GOOS=windows GOARCH=amd64 make release-client

  6. 编译后,就会在bin目录下生成windows_amd64目录,其中就包含着windows下运行的服务器和客户端程序。

  7. #以上GOARCH=amd64指的是编译为64位版本,如需32位改成GOARCH=386即可

编译arm客户端

 
  1. cd /usr/lib/golang/src/

  2. sudo GOOS=linux GOARCH=arm CGO_ENABLED=0 ./make.bash

  3. sudo GOOS=linux GOARCH=arm make release-client

编译mac版本客户端

GOOS=darwin GOARCH=amd64 make  release-client

设置域名解析

添加两条A记录:tunnel.imike.me和*.tunnel.imike.me,指向所在的Ngrok服务器ip。

运行Ngrok

服务端启动

指定证书、域名和端口启动它(证书就是前面生成的,注意修改域名)

 
  1. ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="tunnel.imike.me" -httpAddr=":8081" -httpsAddr=":8082"

  2. [14:54:30 CST 2016/03/23] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry] [tun] No affinity cache specified

  3. [14:54:30 CST 2016/03/23] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds

  4. [14:54:30 CST 2016/03/23] [INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:8081

  5. [14:54:30 CST 2016/03/23] [INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:8082

  6. [14:54:30 CST 2016/03/23] [INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:4443

到这一步,ngrok 服务已经跑起来了,可以通过屏幕上显示的日志查看更多信息。httpAddr、httpsAddr 分别是ngrok用来转发http、https服务的端口,可以随意指定。ngrokd还会开一个4443端口用来跟客户端通讯(可通过-tunnelAddr=”:xxx” 指定),如果你配置了iptables 规则,需要放行这三个端口上的TCP协议。

现在通过http://tunnel.imike.me:8081https://tunnel.imike.me:8082就可以访问到ngrok提供的转发服务。

设置开机自动启动ngrok服务

 
  1. vim /etc/init.d/ngrok_start:

  2. cd /root/goproj/src/github.com/inconshreveable

  3. ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="tunnel.imike.me" -httpAddr=":8081" -httpsAddr=":8082"

  4. chmod 755 /etc/init.d/ngrok_start

客户端启动

使用默认配置文件启动

对默认设置文件 ~/.ngrok 进行编辑:

 
  1. server_addr: tunnel.imike.me:4443

  2. trust_host_root_certs: false

  3. tunnels:

  4.    #http:subdomain: "test"

  5.    web:

  6.        #auth: "AuthUser:AuthPassWord"

  7.        proto:

  8.            http: 80

  9.    ssh:

  10.        remote_port: 12222

  11.        proto:

  12.            tcp: 22

从命令行运行:

./bin/ngrok start web ssh

当客户端使用http/https协议连接,可指定一个二级域名,服务端会分配该二级域名给客户端作为入口,比如web.tunnel.imike.me;

当客户端使用tcp 协议连接,则服务端不会分配二级域名,改为监控一个随机端口,比如 tunnel.imike.me:12345,remote_port可由客户端对该端口进行指定,比如tunnel.imike.me:12222。

使用自定义配置文件

创建一个配置文件ngrok.cfg,内容如下:

 
  1. vim ngrok.cfg:

  2. server_addr: tunnel.imike.me:4443

  3. trust_host_root_certs: false

映射HTTP

 
  1. #启动ngrok客户端

  2. #指定子域、要转发的协议和端口,以及配置文件,运行客户端:

  3. #注意:如果不加参数-subdomain=test,将会随机自动分配子域名。

  4. ./bin/ngrok -subdomain web -proto=http -config=ngrok.cfg 80

  5. #客户端ngrok正常执行显示的内容

  6. ngrok                                                  (Ctrl+C to quit)

  7. Tunnel Status     online

  8. Version           1.7/1.7

  9. Forwarding        http://web.tunnel.imike.me:8081 -> 127.0.0.1:80

  10. Web Interface     127.0.0.1:4040

  11. # Conn            0

  12. Avg Conn Time     0.00ms

打开浏览器,分别在地址栏中输入http://localhosthttp://web.tunnel.imike.me:8081,如果后者正常显示并且和http://localhost显示的内容相同,则证明我们已经成功了。

映射TCP

有时候,我们使用远程桌面功能,或者在linux中进行SSH连接,对于处在内网环境中的计算机,我们可以对该端口进行TCP映射。

 
  1. #这里以SSH连接Linux时的22端口为例

  2. ./bin/ngrok -config=ngrok.cfg -proto=tcp 22

  3. 映射成功的话,会显示如下内容:

  4. #客户端ngrok正常执行显示的内容

  5. ngrok                                                  (Ctrl+C to quit)

  6. Tunnel Status     online

  7. Version           1.7/1.7

  8. Forwarding        tcp://imike.me:12222 -> 127.0.0.1:22

  9. Web Interface     127.0.0.1:4040

  10. # Conn            0

  11. Avg Conn Time     0.00ms

现在,在putty等ssh工具中即可连接imike.me。切记端口是号12222,是随机分配的一个端口号,而不是默认的22端口了。Windows的远程桌面可以将其映射到3389端口来实现。同理,如果要做MySQL的远程连接,只需映射3306端口即可。FTP可映射21端口。

注意:客户端必须使用自己编译的ngrok文件

管理界面

Ngrok客户端运行后,有一个Web Interface地址,这是ngrok 提供的监控界面。通过这个界面可以看到远端转发过来的http 详情,包括完整的request/response 信息,可以不刷新页面通过replay按钮重新发出请求,非常方便。

访问管理界面:http://127.0.0.1:4040

后续定制及优化

通过以上操作,我们的ngrok服务器就已经成功搭建了,客户端也成功的跑了起来。但是,如果我们想要对ngrok进行一些定制和优化,可以参考这些后续定制及优化的方法。

为什么在启动服务端的时候,端口不指定为80

很遗憾,因为这台vps不是只用来做ngrok服务的,我博客还在上面呢,80端口已经被nginx占用了。
那怎么办?不得不提nginx是个牛逼的软件,我们可以在nginx中配置一个server,就绑定web.tunnel.imike.me域名,然后将所有请求转发到后端:8081端口上,这就是反向代理。我发一下自己的nginx配置:

 
  1. #ngrok.imike.me.conf

  2. upstream ngrok {

  3.    server 127.0.0.1:8000;

  4.    keepalive 64;

  5. }

  6. server {

  7.    listen 80;

  8.    server_name *.tunnel.imike.me;

  9.    access_log /var/log/nginx/ngrok_access.log;

  10.    location / {

  11.        proxy_set_essay-header X-Real-IP $remote_addr;

  12.        proxy_set_essay-header X-Forwarded-For $proxy_add_x_forwarded_for;

  13.        proxy_set_essay-header Host  $http_host:8081;

  14.        proxy_set_essay-header X-Nginx-Proxy true;

  15.        proxy_set_essay-header Connection "";

  16.        proxy_pass      http://ngrok;

  17.    }

  18. }

修改客户端ngrok默认服务地址

客户端每次还需要加载配置文件,这样显得有些麻烦。能不能像官方服务那样直接执行命令 ngrok 80就能使用呢?我们只需要在编译客户端之前,稍作修改即可。同样,如果需要指定域名可以执行命令 ngrok -subdomain=test 80来运行客户端。

修改默认服务地址

 
  1. vim ./src/ngrok/client/model.go

  2. 找到第23行,将 defaultServerAddr = "ngrokd.ngrok.com:443"

  3. 修改为defaultServerAddr = "tunnel.mydomain:4443" 即可。

修改客户端ngrok左上角蓝色文字logo

运行客户端后,我们会发现在客户端左上角会有一个蓝色字体的”ngrok”字样的文字logo,如果觉得不太喜欢,或者想修改一下的话,可以在编译客户端之前,作如下修改。

修改客户端蓝色文字logo

 
  1. Vim ./src/ngrok/client/views/term/view.go

  2. 找到第100行,将

  3. v.APrintf(termbox.ColorBlue|termbox.AttrBold, 0, 0, "ngrok")

  4. 修改为

  5. v.APrintf(termbox.ColorBlue|termbox.AttrBold, 0, 0, "your logo")

  6. 即可。

修改客户端帮助信息

Ngrok客户端默认的帮助信息很少,我们可以在编译客户端之前,自己定制帮助内容。

修改客户端默认帮助信息

 
  1. vim ./src/ngrok/client/client/cli.go

  2. 找到第14行,修改 const usage2 string的值即可。

客户端程序加壳优化

编译好的Windows客户端ngrok.exe大小为10MB,感觉有点大,这样加载到内存中,需要读取硬盘的内容也相对较多,影响速度。所以,我们来给客户端程序加个压缩壳,对程序进行压缩。
这里采用mpress进行加壳,先从网上下载mpress.exe,之后将ngrok.exe拖放到mpress.exe的图标上,就能完成加壳操作。我们可以看到,加壳后的程序只有1.94MB,压缩率不到20%,大大节省了磁盘空间。同时小文件加载起来,速度会更快。

常见错误

在编译ngrok的时候,安装yaml的时候不能下载,无反应

 
  1. gopkg.in/inconshreveable/go-update.v0  (download)

  2. 或者

  3. gopkg.in/yaml.v1 (download)

  4. 原因git版本太低,需>= 1.7.9.5,通过RPMForge源安装最新版本git解决:

  5. yum --enablerepo=rpmforge-extras install git

把编译出来的32位客户端放在64位上运行时会报错

 
  1. /lib/ld-linux.so.2: bad ELF interpreter

  2. #解决方法

  3. yum install -y glibc.i686

在ngrok目录下执行如下命令,编译ngrokd

 
  1. $ make release-server

  2. 出现如下错误:

  3. GOOS="" GOARCH="" go get github.com/jteeuwen/go-bindata/go-bindata

  4. bin/go-bindata -nomemcopy -pkg=assets -tags=release \

  5.        -debug=false \

  6.        -o=src/ngrok/client/assets/assets_release.go \

  7.        assets/client/…

  8. make: bin/go-bindata: Command not found

  9. make: *** [client-assets] Error 127

  10. go-bindata被安装到了$GOBIN下了,go编译器找不到了。修正方法是将$GOBIN/go-bindata拷贝到当前ngrok/bin下。

  11. $cp /home/ubuntu/.bin/go14/bin/go-bindata ./bin

客户端ngrok.cfg中server_addr后的值必须严格与-domain以及证书中的NGROK_BASE_DOMAIN相同,否则Server端就会出现如下错误日志

 
  1. [03/13/15 09:55:46] [INFO] [tun:15dd7522] New connection from 54.149.100.42:38252

  2. [03/13/15 09:55:46] [DEBG] [tun:15dd7522] Waiting to read message

  3. [03/13/15 09:55:46] [WARN] [tun:15dd7522] Failed to read message: remote error: bad certificate

  4. [03/13/15 09:55:46] [DEBG] [tun:15dd7522] Closing

一此国内的Ngrok免费服务

http://www.ittun.com
http://qydev.com/
http://natapp.cn/
http://www.ngrok.cc/

参考文档

http://www.google.com
http://blog.lzp.name/archives/24
http://tonybai.com/2015/03/14/selfhost-ngrok-service/

Centos7搭建Ngrok相关推荐

  1. Centos7搭建Ngrok内网穿透

    一.安装gcc和git(用于下载ngrok源码) yum install gcc -y yum install git -y 二.安装go语言环境 yum install -y mercurial g ...

  2. 编译搭建ngrok服务实现内网穿透

    搭建ngrok服务实现内网穿透 日期: 2019-05-09 环境说明: 编译环境:名称:CentOS7 系统:CentOS7 1810 64位GO版本:1.11 和 1.13 均测试编译通过,1.1 ...

  3. ngrok linux开机自启动,CentOS 搭建ngrok服务器

    原标题:CentOS 搭建ngrok服务器 1一.前提条件 1. 准备好一台主机,带公网IP 2. 准备一个一级域名,做好泛解析(二级域名的没有配置成功,汗...) 切记 一定要做好域名泛解析 二.安 ...

  4. CentOS7搭建Git服务器

    CentOS7搭建Git服务器 文章目录 CentOS7搭建Git服务器 前言 搭建步骤 参考链接 前言 现有一台操作系统为CentOS 7的服务器,要将其作为代码库服务器使用,要求使用Git进行代码 ...

  5. linux下本地的源的格式,[Linux]CentOS7搭建/配置:YUM仓库/源[本地源/HTTP源/自建源仓库...

    [Linux]CentOS7搭建/配置:YUM仓库/源[本地源/HTTP源/自建源仓库 1 本地YUM源 1.1 [YUM仓库/服务端] 获取:软件包资源 1.2 [YUM仓库/服务端] 挂载/搭建: ...

  6. linux安装mysql5.7.29_linux 之centos7搭建mysql5.7.29的详细过程

    1.下载mysql 1.1下载地址 https://downloads.mysql.com/archives/community/ 1.2版本选择 2.管理组及目录权限 2.1解压mysql tar ...

  7. 阿里云apache配置php mysql_阿里云CentOS7搭建Apache+PHP+MySQL环境

    最近要搭建一个阿里云的LMAP环境,选了CentOS7来做搭建. 1.Apache Centos7默认已经安装httpd服务,只是没有启动. 如果你需要全新安装,可以yum install -y ht ...

  8. 【运维开发】Mac OS(10.13.6)使用 vagrant+VirtualBox +centos7搭建k8s集群

    Mac OS(10.13.6)使用 vagrant+VirtualBox +centos7搭建k8s集群步骤 环境准备工作 下载VirtualBox 地址:https://www.virtualbox ...

  9. Centos7 搭建LNMP架构服务器实战

    Centos7 搭建LNMP架构服务器实战 前言 需求分析 拓朴设计及各服务器地址规划 配置部分 后端服务器实现 Web-1 nginx整合 Web-2 nginx整合 后端服务器测试 高可用Web集 ...

最新文章

  1. 性能分析工具 Android TraceView
  2. mysql回收权限_mysql回收权限不成功,请问如何破?
  3. MAT之GUI:GUI的方式创建/训练/仿真/预测神经网络
  4. 企业微信 添加白名单_企业微信群为什么只能加200人?企业微信群怎么申请扩容?...
  5. 认清JavaScript和JAVA全局变量和局部变量的作用域
  6. Python学习(七)面向对象 ——封装
  7. vivado 仿真_提高Vivado效率一种自研工具介绍
  8. 一路风雨走过来:那些我亲密接触过的项目
  9. C-snowflake uuid 生成器
  10. 小白能读懂的 《手把手教你学DSP(TMS320X281X)》第三章 2020-12-25
  11. HashMap碰撞问题解析
  12. win7删除桌面计算机图标怎么删除,Win7桌面图标箭头怎么去掉?去掉桌面图标箭头的方法...
  13. CNN应用之性别、年龄识别
  14. 使用gmediarender-resurrect搭建DLNA音箱
  15. H5前端输入和展示 表情 三种解决方案
  16. repo,git相关命令使用
  17. 文旅夜游——让城市夜晚更加绚烂多彩
  18. 软件测试python掌握到什么程度_软件测试学习到什么程度能顺利工作?
  19. netty(三) NioEventLoop再学习
  20. 一度智信|拼多多客服售后须知

热门文章

  1. 浅谈servlet与jsp的关系
  2. 获取 HTML5 网页设计灵感的10个网站推荐
  3. 学web前端一定要这样学,不然学完找不到工作哭都来不及!
  4. 阅读react-redux源码(四) - connectAdvanced、wrapWithConnect、ConnectFunction和checkForUpdates
  5. linux线程基础篇----线程同步与互斥
  6. js根据ip自动获取地址(省市区)
  7. SQL数据库中临时表、临时变量和WITH AS关键词创建“临时表”的区别
  8. Python 06-字典
  9. tokumx经营报表
  10. 位图像素的颜色 携程编程大赛hdu