linux服务器搭建ngrok服务-实现内网穿透(转载,自己搭建成功)

1.ngrok依赖gcc 和 golang的安装已经存在请忽略

# 安装 gcc
 
yum -y install gcc
 
yum -y install gcc-c++
 
# 安装 golang , 下载地址在https://studygolang.com/dl中找的,想换版本可以在这里找
 
wget https://studygolang.com/dl/golang/go1.8.linux-amd64.tar.gz
 
tar -zxvf go1.8.linux-amd64.tar.gz  #直接解压到当前目录

设置go环境变量

export GOROOT=你的go解压地址

export PATH=$PATH:$GOROOT/bin

source /etc/profile #是环境生效

go version #查看go是否安装成功

 

如图

 2.下载ngrok

cd /usr/local      #自己更改目录

#安装git 用于下载ngrok代码
yum -y install git
 
#克隆代码,文件夹命名为 ngrok-server,也可以填写,默认就是ngrok
 
git clone https://github.com/inconshreveable/ngrok.git ngrok-server

 

 完成之后如图

 3.ngrok配置

执行一下命令。使用ngrok.com官方服务时,我们使用的是官方的SSL证书。自建ngrokd服务,如果不想买SSL证书,我们需要生成自己的自签名证书,并编译一个携带该证书的ngrok客户端。
证书生成过程需要一个NGROK_BASE_DOMAIN。 填写我们的域名地址

cd ngrok-server    #进入安装根目录
 
NGROK_DOMAIN="ngrok.xxxx.com"
 
openssl genrsa -out rootCA.key 2048
 
openssl req -new -x509 -nodes -key rootCA.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out rootCA.pem
 
openssl genrsa -out server.key 2048
 
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
 
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -days 10000 -out server.crt
 

 完成之后

 

4.经过以上步骤,证书已经生成,下面复制证书到默认读取目录下

#复制rootCA.pem到assets/client/tls/并更名为ngrokroot.crt
 
cp rootCA.pem assets/client/tls/ngrokroot.crt
 
#复制server.crt到assets/server/tls/并更名为snakeoil.crt
 
cp server.crt assets/server/tls/snakeoil.crt
 
#复制server.key到assets/server/tls/并更名为snakeoil.key
 
cp server.key assets/server/tls/snakeoil.key

 上面会让你提示是否覆盖,输入y即可。如果不想每次都提示,可以使用如下命令,这是一个骚操作
cp前面加上一个\,然后加上-rf即可没有提示,直接覆盖。

\cp -rf rootCA.pem assets/client/tls/ngrokroot.crt
 
\cp -rf server.crt assets/server/tls/snakeoil.crt
 
\cp -rf server.key assets/server/tls/snakeoil.key

5.生成客户端和服务器端

我只用到linux服务器端和win客户端,我只需要执行如下即可。
根据自己需要生成

#linux服务端 
GOOS=linux GOARCH=386 make release-server

#linux 64服务端

GOOS=linux GOARCH=amd64 make release-server
#win客户端
GOOS=windows GOARCH=386 make release-client

#64位 win客户端

GOOS=windows GOARCH=amd64 make release-client

其他端

 #win服务端
 
GOOS=windows GOARCH=386 make release-server
 
#win客户端
 
GOOS=windows GOARCH=386 make release-client
 
#linux服务端
 
GOOS=linux GOARCH=386 make release-server
 
#linux客户端
 
GOOS=linux GOARCH=386 make release-client

 第一次生成需要点时间,因为golang编译需要下载一些插件。

编译后的软件在bin目录下

进入 linux_386服务器端文件夹配置启动服务器,启动linux服务端

httpAddr,httpsAddr为访问服务端端口,可以设置为80和443,访问的时候不用加端口号.

tunnelAddr为给客户端提供的连接端口默认4443可自行修改,这里改为8090

 cd linux_386
 
#前台运行
 
./ngrokd -domain="ngrok.xxxx.com"  -httpAddr=":8090" -httpsAddr=":8091" -tunnelAddr=":8092"
 
#后台运行
 
nohup ./ngrokd -domain="ngrok.xxxx.com"  -httpAddr=":8090" -httpsAddr=":8091" -tunnelAddr=":8092" &

 

6.客户端连接

拷贝上一步生成的window客户端到要映射的电脑

并手动创建配置文件和启动文件

ngrok.cfg是配置文件

server_addr: ngrok.xxxx.com:8092
trust_host_root_certs: false
 
tunnels:
 ssh-example:
  remote_port: 8093
  proto:
   tcp: 22
 sssh-example:
  emote_port: 3389
  proto:
   tcp: 3389
 ftp-example:
  remote_port: 21
  proto:
   tcp: 21
 http1-example:
  subdomain: demo1
  proto:
   http: 8080
   https: 8081
 http2-example:
  subdomain: demo2
  proto:
   http: 8083

参数说明如下图:

新建start.bat批处理文件用于 启动

#启动所有隧道
 
ngrok -config=ngrok.cfg start-all
 
pause
 
#启动指定隧道
 
ngrok -config=ngrok.cfg start ssh-example sssh-example

启动成功后

 

7.优化ngrok服务-设置开机启动 

在ngrok程序目录下新建一个启动脚本,例如:start.sh

#path为当前目录的路径,启动脚本要写后台启动的脚本,后面的启动项目根据自己需要来写
 
path=/usr/local/ngrok
 
$path
 
./bin/linux_386/ngrokd -domain="ngrok.xxxx.com" -httpAddr=":8090" -httpsAddr=":8091" -tunnelAddr=":8092"

把ngrok程序制作成系统服务

在 /etc/rc.d/init.d目录下新建一个服务项目(ngrok),如下:  

[plain] view plain copy
 
    #!/bin/sh  
    #chkconfig:2345 70 30  
    #description:ngrok  
      
    ngrok_path=/usr/local/ngrok
    case "$1" in
        start)
            echo "start ngrok service.."
            sh ${ngrok_path}/start.sh
            ;;
        *)
        exit 1
        ;;
    esac

 

给该文件赋权限755

chmod 755 ngrok 

注册ngrok服务自启动

chkconfig --add ngrok 

测试服务是否能启动成功

service ngrok start 

检查自启动的服务 

chkconfig 

reboot重启就实现自启后台运行了

注意:ngrok.xxxx.com 和 *.ngrok.xxxx.com要进行域名解析

 

 

其他:如果是自己的证书就省略了生成这一步,下面以阿里云ssl为例

 点击下载(类型选择apache或者nginx)

移动到相应位置即可。

详细文档请查看 http://www.ngrok.cn/


————————————————
原文链接:https://blog.csdn.net/echizao1839/article/details/89040403

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值