一、部署环境
1、linux外网系统服务器一台
2、一个域名,域名可以不备案,绑定到服务器上
二、搭建Ngrok服务器(开始进行服务器搭建)
1.安装GNU编译器套件、git(用于下载Ngrok源码)、以及GO语言环境
[root@centos ~]# yum -y install gcc
[root@centos ~]# yum install git -y
[root@centos ~]# yum install -y mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386
2.安装上传下载插件、screen(使ngrok不间断运行)
[root@centos ~]# yum install lrzsz -y
[root@centos ~]# yum install screen -y
安装完之后查看一下git和go的版本
[root@centos ~]# git --version
git version 1.7.1
[root@centos ~]# go version
go version go1.9.4 linux/amd64
3.下载ngrok源码,并且切换到ngrok目录下
[root@centos ~]# git clone https://github.com/inconshreveable/ngrok.git
[root@centos ~]# cd ngrok
4.生成证书
我申请到的域名是example.com,所以第一行命令的hergua.club需要改成各位同学的域名,如果域名配置错误就会被拒绝连接
#这里要修改为自己的域名, 这↓里
[root@centos ~]# export NGROK_DOMAIN="example.com"
[root@centos ~]# openssl genrsa -out rootCA.key 2048
[root@centos ~]# openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
[root@centos ~]# openssl genrsa -out device.key 2048
[root@centos ~]# openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
[root@centos ~]# openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
5.提换证书
这里的命令每敲一行,都要输入“y”来进行确认,当初就是因为直接回车导致证书匹配不上
[root@centos ~]# cp rootCA.pem assets/client/tls/ngrokroot.crt
[root@centos ~]# cp device.crt assets/server/tls/snakeoil.crt
[root@centos ~]# cp device.key assets/server/tls/snakeoil.key
6.编译ngrok的服务端
服务端就是跑在服务器上的ngrok程序,用来帮你映射转发数据的。
这里编译会慢一点
[root@centos ~]# GOOS=linux GOARCH=amd64 make release-server
7.编译生成ngrok的客户端
这里生成的就是Windows可以直接运行的.exe文件,安装完成后需要把它从服务器上拿下来,然后在需要远程控制的电脑上运行
[root@centos ~]# GOOS=windows GOARCH=amd64 make release-client
8.获取刚才生成的Windows客户端运行文件
键入获取文件的命令
[root@centos ~]# cd bin/windows_amd64
[root@centos ~]# sz ngrok.exe
如果断开连接或者切换过目录的同学请输入以下命令
[root@centos ~]# sz /root/ngrok/bin/windows_amd64/ngrok.exe
9.启动ngrok服务端
确保当前目录在ngrok下
开启screen功能,确保等下要进行的进程不会因为断开Xshell的连接就被杀死
下面的命令 name可以随意指定,不过也没什么必要改
命令输入之后,界面会被清空
[root@centos ~]# screen -S name
开启ngrok服务端进程,这里的域名还是要改
[root@centos ~]# sudo ./bin/ngrokd -domain="hergua.club" -httpAddr=":99" -httpsAddr=":999" -tunnelAddr=":9090"
这里我们指定80号端口为http的转发口,所有发向这个端口的http请求都会被转发到开启ngrok客户端的服务器上,一般挂网站的同学需要用到
8083号端口被我指定为ngrok的连接口,这个端口千万不能被关闭,有的服务器设置是只开放寻常端口也就是日常用到的80、443、22号端口
至此,linux服务端的ngrok配置就完成了,可以关闭Xshell了。我们开始配置本地的客户端
三、配置本地ngrok
1.将刚才下载下来的ngrok.exe,放到一个空文件夹当中,并在该文件夹中新建一个ngrok.cfg文件(可以新建一个记事本,然后把名字改成ngrok.cfg)。输入以下内容
server_addr 中的hergua.club需要改成各位同学自己的域名
[root@centos ~]# server_addr: "example:9090"
[root@centos ~]# trust_host_root_certs: false
tunnels:
http:
subdomain: "www"
proto:
http: "99"
https:
subdomain: "www"
proto:
https: "999"
mstsc:
remote_port: 3389
proto:
tcp: "127.0.0.1:3389"
2.同样在该目录下新建start.bat文件,用记事本打开,输入以下命令
[root@centos ~]# ngrok -config=ngrok.cfg start http https mstsc
3.全部完成后,目录结构是这样的:
结构目录
双击start.bat,出现下图就说明搭建成功了
确保这台电脑的远程桌面已经开启了
只要黑框框窗口不关闭,那么就可以通过mstsc命令进行远程控制这台电脑了
11.进行远程控制
在另一台电脑上按 WIN+R键 输入mstsc,回车
输入你的域名,点击连接,就可以进行远程桌面了。
最后,附上远程连接截图一张
一般的网络上行带宽只有2Mbps,实时速度差不多在250kb/s。所以只能进行一般的办公,要是想远程游戏,想都别想了除非你的上行带宽够高。不过一般高上行带宽是卖给服务商的,一般的家庭或学校网络远程桌面是不会多流畅的。