Centos7(amd64)服务器 + Windows计算机 + xshell远程连接linux工具
应用场景:
计算机网络处于内网,没有公网IP的情况下需要连接计算机的远程桌面
例如:学校网络(令博主蛋疼不已的网络),公司内部,通过路由器上网的家庭网络(虽然这个可以通过端口映射来实现连接。但要是家里的网络路由是从别人那桥接、中继来的那端口映射可就要失灵了)
前言
博主身为一个大三狗,日常需要测试发布网站以便让同学来帮助自己测试网站,可项目部署在宿舍的笔记本上,而学校的网络是一个IP池,哪怕你获取到你当前的公网IP也还是无法连接,这个IP有多少人在共同使用还不知道呢。虽说可以发布到服务器上面让别人直接访问测试,不过这样还是太麻烦,毕竟放在服务器上的版本怎么说也应该是测试完毕的正式版(强迫症患者)。而且最近配了一台12K+的台式机放在宿舍,可博主日常要去工作室,优异的性能摆在那不用岂不是浪费?
所以博主尝试了不少方法来远程操控宿舍的主机包括贝锐加的花生壳(内网映射)以及向日葵(远程连接工具)但是这两样东西免费的都要受到贝锐服务器的限制,连接的人数一多久服务器就变得非常的慢,好几次差点就被气死。想了一会还是Windows的远程桌面最好用了(mstsc)。可这个东西需要有公网IP才能使用,而学校里面又不可能给你提供的。所以博主就开始找起了教程来实现内网穿透解决方案,让远程桌面不需要公网IP也可以正常的使用。
1、准备
一台安装Centos7的云服务器:这里我用的是腾讯云的服务器使用的环境是Centos 7.2(64位),当然阿里、华为等其他家的服务器也是可以的。因为我用的是腾讯的服务器,所以我就以腾讯服务器来作为讲解,对于使用其他家的服务器的同学来讲这点区别问题应该不大。
一个域名:域名必须要有,不然没有办法解析映射。而且域名挺便宜的,腾讯在做活动.club的域名只要2块钱/年。而且不做网站服务的话,备案也不需要但是需要进行实名认证,买完绑定就行了。
需要设置域名解析到服务器上,购买服务器以及绑定域名等工作各大厂家的官网上都有教,这里就不再赘述。
2、搭建Ngrok服务器
使用Xshell工具连接到linux服务器之后,开始进行服务器搭建
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.安装上传下载插件、screen(使ngrok不间断运行)
yum install lrzsz -y
yum install screen -y
安装完之后查看一下git和go的版本
git —version ==⇒>>>> git version 1.8.3.1
go version ==⇒>>>> go version go1.9.4 linux/amd64
3.下载ngrok源码,并且切换到ngrok目录下
git clone https://github.com/inconshreveable/ngrok.git
cd ngrok
4.生成证书
我申请到的域名是hergua.club,所以第一行命令的hergua.club需要改成各位同学的域名,如果域名配置错误就会被拒绝连接
这里要修改为自己的域名, 这↓里
export NGROK_DOMAIN="hergua.club"
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.提换证书
这里的命令每敲一行,都要输入“y”来进行确认,当初就是因为直接回车导致证书匹配不上
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key
6.编译ngrok的服务端
服务端就是跑在服务器上的ngrok程序,用来帮你映射转发数据的。
这里编译会慢一点
GOOS=linux GOARCH=amd64 make release-server
7.编译生成ngrok的客户端
这里生成的就是Windows可以直接运行的.exe文件,安装完成后需要把它从服务器上拿下来,然后在需要远程控制的电脑上运行
GOOS=windows GOARCH=amd64 make release-client
8.获取刚才生成的Windows客户端运行文件
键入获取文件的命令
cd bin/windows_amd64
sz ngrok.exe
如果断开连接或者切换过目录的同学请输入以下命令
sz /root/ngrok/bin/windows_amd64/ngrok.exe
9.启动ngrok服务端
开启screen功能,确保等下要进行的进程不会因为断开Xshell的连接就被杀死
下面的命令 name可以随意指定,不过也没什么必要改
命令输入之后,界面会被清空
screen -S name
开启ngrok服务端进程,这里的域名还是要改
sudo ./bin/ngrokd -domain="hergua.club" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":8083"
这里我们指定80号端口为http的转发口,所有发向这个端口的http请求都会被转发到开启ngrok客户端的服务器上,一般挂网站的同学需要用到
8083号端口被我指定为ngrok的连接口,这个端口千万不能被关闭,有的服务器设置是只开放寻常端口也就是日常用到的80、443、22号端口
至此,linux服务端的ngrok配置就完成了,可以关闭Xshell了。我们开始配置本地的客户端
10.配置本地ngrok
1.将刚才下载下来的ngrok.exe,放到一个空文件夹当中,并在该文件夹中新建一个ngrok.cfg文件(可以新建一个记事本,然后把名字改成ngrok.cfg)。输入以下内容
server_addr 中的hergua.club需要改成各位同学自己的域名
server_addr: "hergua.club:8083"
trust_host_root_certs: false
tunnels:
http:
subdomain: "www"
proto:
http: "80"
https:
subdomain: "www"
proto:
https: "443"
mstsc:
remote_port: 3389
proto:
tcp: "127.0.0.1:3389"
2.同样在该目录下新建start.bat文件,用记事本打开,输入以下命令
ngrok -config=ngrok.cfg start http https mstsc
3.全部完成后,目录结构是这样的:
双击start.bat,出现下图就说明搭建成功了
确保这台电脑的远程桌面已经开启了
只要黑框框窗口不关闭,那么就可以通过mstsc命令进行远程控制这台电脑了
11.进行远程控制
在另一台电脑上按 WIN+R键 输入mstsc,回车
输入你的域名,点击连接,就可以进行远程桌面了。
最后,附上远程连接截图一张
12.话外
一般的网络上行带宽只有2Mbps,实时速度差不多在250kb/s。所以只能进行一般的办公,而且Windows内置的远程界面传输规则会很明显的节省流量,以达到界面的流畅性。总的来说远程桌面并不需要很大的上行带宽就能得到不错的体验,如果想用远程桌面玩游戏的话,还是放弃吧。有些游戏在此状态下,无法启动(找不到显卡)。办办公,挖挖矿啥的还是很不错的。