ngrok 介绍:
ngrok 是一款用 go 语言开发的开源软件,它是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道.
ngrok 可以做 TCP 端口转发,对于 Linux 可以将其映射到 22 端口进行 SSH 连接,
Windows 的远程桌面可以将其映射到 3389 端口来实现.
同理,如果要做 MySQL 的远程连接,只需映射 3306 端口即可
【frp 更加好用,推荐使用frp github:GitHub - fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.】
准备工作:
建议为腾讯或者阿里云主机
域名:ngrok.dvcloud.xin
系统:centos7.6
功能:主要使本地电脑远程映射到公网上面
操作如下:
安装 gcc 和git
yum install gcc git -y
2.安装go 环境
yum install golang -y
如果提示包不存在,需要安装
yum install -y epel-release
yum install golang -y
3.下载 ngrok 源码
cd /usr/local/
git clone https://github.com/inconshreveable/ngrok.git
4.生成证书:
cd /usr/local/ngrok
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.dvcloud.xin" -days 5000 -out rootCA.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=ngrok.dvcloud.xin" -out server.csr
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
将生成的证书替换掉 ngrok默认的证书
\cp rootCA.pem assets/client/tls/ngrokroot.crt
\cp server.crt assets/server/tls/dvcloud.crt
\cp server.key assets/server/tls/dvcloud.key
5.编译ngrokd 服务端
GOOS=linux GOARCH=amd64 make release-server
6.编译客户端
GOOS=windows GOARCH=amd64 make release-client
#编译成功后会在ngrok/bin/下面生成一个windows_amd64目录下面有ngrok.exe
#Linux 平台 32 位系统:GOOS=linux GOARCH=386
#Linux 平台 64 位系统:GOOS=linux GOARCH=amd64
#Windows 平台 32 位系统:GOOS=windows GOARCH=386
#Windows 平台 64 位系统:GOOS=windows GOARCH=amd64
#MAC 平台 32 位系统:GOOS=darwin GOARCH=386
#MAC 平台 64 位系统:GOOS=darwin GOARCH=amd64
#ARM 平台:GOOS=linux GOARCH=arm
7.添加自定义系统服务
vim /usr/lib/systemd/system/ngrok.service
[Unit]
Description=ngrok
After=network.target
[Service]
Type=simple
Restart=always
RestartSec=1min
ExecStart=/usr/local/ngrok/bin/ngrokd -tlsCrt=/usr/local/ngrok/assets/server/tls/dvcloud.crt -tlsKey=/usr/local/ngrok/assets/server/tls/dvcloud.key -domain=ngrok.dvcloud.xin -httpAddr=:800 -httpsAddr=:801 -tunnelAddr=:55552 %i
ExecStop=/usr/bin/killall ngrok
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# ngrokd 日志可以通过启动参数指定 -log=/var/log/ngrokd.logs
# 重载系统服务:
systemctl daemon-reload
# 设置开机启动
systemctl enable ngrok.service
# 启动服务
systemctl start ngrok.service
日志可以在 /var/log/messages
windows 10 客户端操作
将生成的/usr/local/ngrok/bin/windows_amd64/ 整个目录复制到 C:\Program Files 目录内
然后写一个配置文件ngrok.conf
内容如下:
server_addr: ngrok.dvcloud.xin:55552
trust_host_root_certs: false
tunnels:
ssh:
remote_port: 36603
proto:
tcp: 3389
然后保存,手动执行命令测试是否正常
测试时正常的,为了方便下次电脑启动直接使用,因此
下载nssm.exe 将ngrok 封装为windows启动服务
NSSM - the Non-Sucking Service Manager
然后,就可以直接运行了。
Linux x64 位客户端操作如下:
解压到 /usr/local 目录
tar xvf ngrok.tar.gz -C /usr/local
然后修改 配置/usr/local/ngrok/conf/ngrok.conf
添加开机启动服务
vim /usr/lib/systemd/system/ngrok.service
[Unit]
Description=ngrok
After=network.target
[Service]
Type=simple
Restart=always
RestartSec=1min
ExecStart=/usr/local/ngrok/bin/ngrok -config=/usr/local/ngrok/conf/ngrok.conf -log /var/log/ngrok/ngrok.log start-all
ExecStop=/usr/bin/killall ngrok
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# 重载系统服务:
systemctl daemon-reload
# 设置开机启动
systemctl enable ngrok.service
# 启动服务
systemctl start ngrok.service