背景:内网主机经过了路由,在外网无法直接访问.虽然我们有Teamviewer,向日葵,anydesk等软件可以实现远程访问内网电脑的图形界面,但是免费的版本有诸多限制,比如带宽低,网络不稳定.另外之前爆出过Teamviewer的服务器被黑,不免让人担心自己的隐私会泄漏.这篇文章就是介绍如何利用云主机,来搭建自己的远程网关,实现外网访问内网主机的功能.
控制台-安全组,添加规则,放行一组端口.
添加完成后,ssh连接到服务器用命令生成key文件,省略以后登陆时输入密码的操作.
#在云主机上操作
ssh-keygen -t rsa
mv ~/.ssh/id_rsa.pub authorized_keys #修改为默认的验证文件.
然后只需要把私钥文件 ~/.ssh/id_rsa 复制到其他电脑的 ~/.ssh/目录下即可实现免密登陆云主机,windows电脑的路径在 C:\Users\用户名\.ssh\
修改ubuntu服务器的sshd_config 文件,启用网关功能
echo 'GatewayPorts yes'|sudo tee -a /etc/ssh/sshd_config # 启用网关功能
echo 'ClientAliveInterval 30' |sudo tee -a /etc/ssh/sshd_config # 每30秒发送一个心跳包,保持连接
echo 'ClientAliveCountMax 30'|sudo tee -a /etc/ssh/sshd_config # 超过30个心跳包发送失败则断开连接
sudo service ssh restart # 重启ssh服务
在内网windows 10(1809以后的版本自带SSH) 上,打开命令提示符
win+R打开运行窗口,然后输入 cmd
在命令提示符中输入
ssh -fCNR 7000:localhost:3389 userID@huaweiyunIP
-f: 后台执行ssh指令;
-C: 请求压缩所有数据;
-N: 不执行远程指令;
-R: 远程端口转发
7000:为远程服务器上用来做转发的端口号
3389:微软远程桌面默认端口
userID:ubuntu服务器用户名
huaweiyunIP:ubuntu服务器IP地址
输入完成后在ubuntu主机上用命令查看端口7000
ss -tnlp #查看返回的结果中是否有上一步指定的端口,比如之前写的7000
存在则代表添加成功,到此就完成了90%的步骤,其他的电脑 可以通过 huaweiyunIP:7000 ,这个地址来访问内网windows10主机的远程桌面.
后续的优化地方,可以将输入命令的步骤加入到 windows的计划任务中,以实现开机联网后自动ssh连接到ubuntu服务器的功能.