服务器

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

2018-09-09  本文已影响74人  GaryZhang

前言

虽然现在云服务非常普及了但有时需要随时随地使用高性能的开发服务器。租云服务一个是太贵了第二是整套环境重新搭建费时又费力。今天花了点时间使用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、微信在文章末尾处。欢迎来告诉我你的想法。

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

上一篇下一篇

猜你喜欢

热点阅读