背景:内网主机经过了路由,在外网无法直接访问.虽然我们有Teamviewer,向日葵,anydesk等软件可以实现远程访问内网电脑的图形界面,但是免费的版本有诸多限制,比如带宽低,网络不稳定.另外之前爆出过Teamviewer的服务器被黑,不免让人担心自己的隐私会泄漏.这篇文章就是介绍如何利用云主机,来搭建自己的远程网关,实现外网访问内网主机的功能.

控制台-安全组,添加规则,放行一组端口.

怎样把家用电脑做云服务器_ssh

 

怎样把家用电脑做云服务器_GatewayPorts_02

怎样把家用电脑做云服务器_ssh_03

添加完成后,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主机的远程桌面.

怎样把家用电脑做云服务器_怎样把家用电脑做云服务器_04

后续的优化地方,可以将输入命令的步骤加入到 windows的计划任务中,以实现开机联网后自动ssh连接到ubuntu服务器的功能.