ubuntu上搭建ngrok服务器

说在前面 :   

       ngrok是一个比较好用的内网穿透工具,通过他外网用户可以直接访问内网的设备,本文主要讲述如何自己搭建ngrok服务器。


准备:

       为了搭建服务器,需要有一个外网ip地址,现在云服务很方便,可以随便租用一台设备来搭建服务器。


安装go编译器:

      网上有很多安装的教程,需要注意的是1.4之后的版本需要使用1.4版本来进行编译,所以必须先安装go1.4然后再安装指定版本,网上很多教程都会忽略这一步,导致编译安装失败。下面有一个比较详细的教程,可以作为参考:

https://studygolang.com/articles/3188

      在使用的时候ngrok客户端可能会在windows或者linux上使用,而go语言本身提供了交叉编译方法,所以不需要我们做修改去适配不同的机器,交叉编译参考下面的文档:

https://studygolang.com/topics/21


下载ngrok源码编译:

       https://github.com/inconshreveable/ngrok

启动服务:

      nohup ./bin/ngrokd  -domain="your-ip" -httpAddr=":8081" -httpsAddr=":8082" -tunnelAddr=":443"

      在shell下启动的服务当shell退出后会被自动杀死,所以在启动时使用nohup用于后台运行;

启动客户端:

      ./ngrok  -config=ngrok.cfg start ssh

      ngrok.cfg文件内容:

         server_addr: "your-ip:443"
           trust_host_root_certs: false
           tunnels:
           ssh:
                remote_port: 35884
           proto:
                tcp: 22

        windows下如果每次都用cmd输入命令则太过麻烦,所以可以自己写一个批处理文件来执行:

        ngrok.bat:

              ngrok -config=ngrok.cfg start ssh
               pause
  搭建服务时遇到的问题:

   客户端链接失败:
    服务器打印: Failed to read message: EOF
    定位原因:
      服务器端显示连接失败,百度之后确定为对端提前结束了tcp连接;
      客户端启动时添加-log信息,显示客户端证书认证失败;
      重新生成证书,并且采用debug方式编译server和client;
      客户端启动时提示找不到证书,按照其指明的路径拷贝证书之后,连接ok;


    最终解决方案:

由于服务是个人使用,所以没有那么关注安全认证,而且证书的路径是源码编译时的路径,本人没有找到如何修改为相对路径,所以直接修改client\debug.go中的rootcrtpaths,把内容删除,则可不要求证书直接连接。


展开阅读全文

没有更多推荐了,返回首页