Centos搭建Ngrok实现内网穿透 - qianlizeguo/doc GitHub Wiki

1、准备 一台云服务器,一个域名,并且域名泛解析解析到云服务器,此处我用的服务器的操作系统为CentOS7(amd64) 注:此处还要解析 @ 域名直接访问

2、安装环境 安装gcc和git(用于下载ngrok源码)

yum install gcc -y
yum install git -y

3、安装go语言环境

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

4、检查环境安装

git --version //( >= 1.7 )
go version

5、在服务器上搭建Ngrok服务 5.1.下载ngrok源码

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

5.2.生成证书

cd ngrok

#abc.com这里修改为自己的域名
export NGROK_DOMAIN="abc.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

5.3.将新生成的证书替换,执行下面命令后 “y” 回车 一行一行执行代码!

cp rootCA.pem assets/client/tls/ngrokroot.crt

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

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

6、编译生成ngrokd(服务端)

GOOS=linux GOARCH=amd64 make release-server

​生成在~/ngrok/bin/目录中

7、编译生成ngrok(客户端)

GOOS=windows GOARCH=amd64 make release-client

​ 生成在~/ngrok/bin/windows_amd64/目录中

编译 linux 客户端

GOOS=linux GOARCH=amd64 make release-client 

编译 mac 客户端

GOOS=darwin GOARCH=amd64 make release-client

8、将~/ngrok/bin里对应系统的客户端下载到对应的机器上 window : ~/ngrok/bin/windows_amd64/ngrok.exe linux : ~/ngrok/bin/windows_amd64/ngrok

9、在客户端执行脚本同级添加 ngrok.cfg文件 文件中输入:

server_addr: "abc.com:8083"
trust_host_root_certs: false
tunnels:
  http:
    subdomain: "www"   #二级域名
    proto:
      http: "80" #本地端口
      
  https:
    subdomain: "www"
    proto:
      https: "443"
 
  ssh:
    remote_port: 2222
    proto:
      tcp: "22"

  mstsc:
        remote_port: 52222      
        proto:
         tcp: "192.168.0.107:3389"

以上 8083 80 443 与 远程开启的端口一致,

注意:一定要根据自己的实际情况在服务器后台安全组规则中开启或删除(我因为相对应的服务器安全组没开,卡了好久,希望可以帮助到大家)。

10、开启远程服务 在ngrok目录中

如果不在

cd ngrok

sudo ./bin/ngrokd -domain="abc.com"  -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":8083" &

11、开启客户机服务 在Windows中D:\ngrok新建文件 改名 start.bat , 如果是 linux 客户机则为 start.sh 并加入可执行权限 输入:

ngrok -config=ngrok.cfg start http https ssh mstsc

直接双击运行 / sh start.sh

表示成功, 不成功的话看看自己的开启端口是否与config文件中对应 或查看服务器的远程端口是否在安全组中打开

!!!这很重要!!!

关于ngrok在远程开机自启问题 服务器后台开机启动运行ngrok服务端: 1.以下内容新建一个 start.sh 文件 放到 ~/ngrok/start.sh

~/ngrok/bin/ngrokd -domain="abc.com"  -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":8083" &

给权限:

chmod 755 ~/ngrok/start.sh

2.新建ngrok启动脚本文件

sudo vi /etc/init.d/ngrok

文件内容:

!/bin/sh

BEGIN INIT INFO

Provides:          ngrok

Required-Start:

Required-Stop:

Default-Start:    2 3 4 5

Default-Stop:      0 1 6

Short-Description: Start or stop the ngrok Proxy.

END INIT INFO

ngrok_path=~/ngrok/

case "$1" in

    start)

            echo "start ngrok service.."

            sh ${ngrok_path}/start.sh

            ;;

  *)

    exit 1

    ;;

esac

提示 : 运行sudo vi /etc/init.d/ngrok之后 !!直接按键盘 I 进入编辑模式,然后复制下面内容 然后 “esc” “:” “wq” “!” “回车” 意思是保存退出! 3.ngrok脚本文件 给权限

cd /etc/init.d

chmod 755 ngrok

4.添加启动服务 ngrok

chkconfig –add ngrok

5.测试服务是否能启动成功

service ngrok start

6.查看自启动的服务 是否有 nrgok !!

chkconfig   

执行这个代码如果出现后面的就OK了!! ngrok 0:off 1:off 2:on 3:on 4:on 5:on 6:off 服务器ngrok的服务端开机自动启动成功了!!!