美文网首页服务器
Ngrok内网穿透随时可用高可用电脑

Ngrok内网穿透随时可用高可用电脑

作者: GaryZhang | 来源:发表于2018-09-09 22:17 被阅读74次

    前言

    虽然现在云服务非常普及了但有时需要随时随地使用高性能的开发服务器。租云服务一个是太贵了第二是整套环境重新搭建费时又费力。今天花了点时间使用Ngrok的网穿透能力基本搞定一个相对靠谱的环境。
    以下步骤基本复制:https://xukimseven.github.io/2018/01/18/Ngrok%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F.html
    只是有一些小步骤没调通,自己做了些修改。

    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
    
    #这里修改为自己的域名
    export NGROK_DOMAIN="cbcye.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/目录中

    8、用SSH Secure Shell Client工具

    将~/ngrok/bin/windows_amd64/里的文件下载到本地Windows下,如D:\ngrok

    9、在D:\ngrok中新建文件,改名为 ngrok.cfg

    文件中输入:

    server_addr: cbcye.com:8083
    trust_host_root_certs: false
    tunnels:
      thttp:
        remote_port: 8080
        proto:
         tcp: 80
    
      thttps:
        remote_port: 8443
        proto:
         tcp: 443
                
      mstsc:
         remote_port: 3389
         proto:
          tcp: 3389
    
    

    Ngrok Conigure配置文件采用YAML格式,即对缩进有要求,冒号后面加空格才是数字。以上 8083 80 443 与 远程开启的端口一致,

    根据自己的实际情况在服务器后台安全组规则中开启或删除。

    10、开启远程服务

    在ngrok目录中

    如果不在

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

    这里的端口号与config文件对应,视情况而定

    [16:05:23 CST 2018/01/09][INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry][tun] No affinity cache specified

    [16:05:23 CST 2018/01/09][INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:80

    [16:05:23 CST 2018/01/09][INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:443

    [16:05:23 CST 2018/01/09][INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:8083

    [16:05:23 CST 2018/01/09][INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds


    显示此为成功开启

    11、开启客户机服务

    在Windows中D:\ngrok新建文件 改名 start.bat

    输入:

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

    直接双击运行

    如果是为了在Windows中后台运行则在bat文件前面增加如下代码:

    @echo off 
        if "%1" == "h" goto begin 
        mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit 
        :begin 
    

    ngrok

    Tunnel Status online

    Version 1.7/1.7

    Forwarding http://www.abc.com -> 127.0.0.1:80

    Forwarding https://www.abc.com -> 127.0.0.1:443

    Forwarding tcp://abc.com:2222 -> 127.0.0.1:22

    Forwarding tcp://abc.com:52222 -> 192.168.1.7:3389

    Web Interface 127.0.0.1:4040

    Conn 0

    Avg Conn Time 0ms


    表示成功,

    不成功的话看看自己的开启端口是否与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
    # chkconfig: 2345 90 60
    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的服务端开机自动启动成功了!!!


    ​ 这样一来,自己的电脑就成 了一台服务器,只要电脑不关,且连着网的话,就非常适合做一个小型网站的测试平台了。

    ​ 如果看到这篇文章还有什么疑问想要寻求帮助的,欢迎联系本人。微博、qq、微信在文章末尾处。欢迎来告诉我你的想法。

    ​ 如需转载,请注明出处,谢谢。

    相关文章

      网友评论

        本文标题:Ngrok内网穿透随时可用高可用电脑

        本文链接:https://www.haomeiwen.com/subject/uvgdgftx.html