1、准备一个域名,可以不用备案。
2、为域名添加解析。如域名为:xxx.com ip地址为:xxx.xx.xx.xx
域名地址解析1:xxx.com 指向ip xxx.xx.xx.xx
域名地址解析2:*.xxx.com 指向ip xxx.xx.xx.xx
NGROK是一个反向代理,它创建了一个从公共端点到本地运行的Web服务的安全隧道。NGROK捕获和分析隧道上的所有流量,以便以后检查和重放。
一、搭建ngrok 服务器
1、安装GNU编译器套件、git(用于下载Ngrok源码)、以及GO语言环境
yum install gcc -y
yum install git -y
yum install -y mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386
2、安装lrzsz ,screen
yum install lrzsz -y
yum install screen -y
3、下载ngrok源码。如:下载到opt目录下,则进入到opt文件夹然后执行以下命令
git clone https://github.com/inconshreveable/ngrok.git
进入ngrok可以看到如下:
4、进入到ngrok文件夹并生成证书。
#这里为自己购买的域名地址
export ngrok_domain="jmps.cloudlinks.cn"
cd ngrok
export NGROK_DOMAIN="jmps.cloudlinks.cn"
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、将生成的证书拷贝到相应目录下替换,记住不要少了前面的斜杠。不然复制一个就会提示是否覆盖
\cp -rf rootCA.pem assets/client/tls/ngrokroot.crt
\cp -rf device.crt assets/server/tls/snakeoil.crt
\cp -rf device.key assets/server/tls/snakeoil.key
6、编译生成ngrok的服务端 客户端必须和服务端一直(证书要编译到客户端里)
GOOS=linux GOARCH=amd64 make release-server
7、生成客户端。
生成windows 64位客户端:
GOOS=windows GOARCH=amd64 make release-client
生成windows 32位客户端(以下生成客户端同理,将goarch值改为386即可):
GOOS=windows GOARCH=386 make release-client
生成mac 客户端:
GOOS=darwin GOARCH=amd64 make release-client
生成linux客户端:
GOOS=linux GOARCH=amd64 make release-client
8、获取生成的客户端。
客户端在ngrok 的bin目录下。可以看到,我在这里生成了windows及mac版本的客户端,进入相应文件夹,下载客户端到本地电脑。
9、开启screen功能。以便查看相应日志,及切回到终端,达到后台执行的目的
screen -ls ; 找到screen会话
切换到相应的会话。
10、开启ngrok服务程序,命令如下:
./ngrokd -domain="snibean.online" -httpAddr=":8099" -httpsAddr=":443" -tunnelAddr=":8083"
可以看到这里http我使用的是8099 端口,https用的443端口。。tunnel使用8083端口。
11、为服务器开放以上端口。我这里系统是centos7,命令如下:
firewall-cmd --zone=public --add-port=8099/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=8083/tcp --permanent
#由于本人要使用到远程桌面连接。故开放3389端口
firewall-cmd --zone=public --add-port=3389/tcp --permanent
12、新建文件ngrok.cfg 内容如下:
server_addr: "域名地址:8083"
trust_host_root_certs: false
tunnels:
http:
subdomain: "aaa"
proto:
http: "8082"
https:
subdomain: "bbbb"
proto:
https: "443"
mstsc:
remote_port: 3389
proto:
tcp: "127.0.0.1:3389"
注意,内容里面不能使用tab来进行对齐 ,只能使用空格。我这里只保留了mstsc做远程桌面连接使用。
server_addr: "域名:8083"
trust_host_root_certs: false
tunnels:
mstsc:
remote_port: 3389
proto:
tcp: "127.0.0.1:3389"
保存后将此文件与下载的客户端文件ngrok.exe放到同级目录。
13、运行客户端。
ngrok -config=ngrok.cfg start mstsc
出现如下图所示则表示连接成功。
到此搭建完毕,即可以进行远程桌面连接。
输入: 域名地址:3389 以及用户名密码即可
14、新建start.bat文件,将以下内容加入到此文件后保存,即可以双击start.bat进行启动。
ngrok -config=ngrok.cfg start mstsc