服务器环境:ubuntu20.04 (需要有外网IP)
客户端环境:ubuntu20.04 (也可以是windows和Mac)
1、安装golang和git
sudo apt install golang git
安装完成,未防止go的版本太新编译不过,需关闭module模式(因为源码很老)
还好目前apt安装的golang是1.3版本也比较老,也直接使用
#关闭module模式
go env -w GO111MODULE=off
2、下载ngrok源码 (已停更很久,有知道新的稳定的,麻烦告知一下)
git clone /inconshreveable/ngrok.git ~/ngrok
有时可能会下载失败,多试几次就可以了
3、生成证书需要用到域名,去腾讯云申请个几块的就可以了
依次执行下来命令即可 ,其中you.domain 替换成申请的域名
cd ~/ngrok#生成证书NGROK_DOMAIN="you.domain"openssl genrsa -out base.key 2048openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pemopenssl genrsa -out server.key 2048openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csropenssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt#替换证书cp base.pem assets/client/tls/ngrokroot.crtcp server.crt assets/server/tls/snakeoil.crtcp server.crt assets/server/tls/snakeoil.crt
4、编译linux服务端和客户端
make release-server release-client
编译可能会有一些包clone失败,多试几次就可以
编译完成会在bin里生成服务端程序ngrokd 和客户端 ngrok
5、编译win、mac客户端
(1)windows
GOOS=windows GOARCH=amd64 make release-client
(2)mac
GOOS=darwin GOARCH=amd64 make release-client
6、启动服务器
sudo ./bin/ngrokd -httpAddr=:8080 -httpsAddr=:8443 -tunnelAddr=:14443
也可直接 sudo ./bin/ngrokd 启动,默认值-httpAddr=:80-httpsAddr=:443-tunnelAddr=:4443
7、启动客户端
创建配置文件 ngrok.cfg,根据需要写入以下内容
server_addr: "you.domain:14443"trust_host_root_certs: false tunnels:ssh:remote_port: 9022proto:tcp: "127.0.0.1:22"svn:remote_port: 13690proto:tcp: "127.0.0.1:3690"
启动客户端
./ngrok -config=ngrok.cfg start ssh svn
8、设置为系统程序,并后台运行
在/etc/systemd/system/目录下创建服务ngrok.service,内容为
服务端
[Unit]Description=ngrokAfter=network.target[Service]ExecStart=/home/eagle/ngrok/ngrokd -httpAddr=":8080" -httpsAddr=":8443" -tunnelAddr=:4443[Install]WantedBy=multi-user.target
客户端
[Unit]Description=ngrokAfter=network.target[Service]ExecStart=/home/eagle/ngrok/ngrok -config=/home/eagle/ngrok/ngrok.cfg -log=/home/eagle/ngrok/log/ngrok.log start ssh svn[Install]WantedBy=multi-user.target
参考:
10分钟教你搭建自己的ngrok服务器_Small-Young的博客
内网穿透-Ngrok服务器搭建教程