通过云服务器实现远程登录内网服务器
开始
相信总会有小伙伴苦恼如何登录上公司或学校的内网服务器,为了解决这个问题我近期也是踩了不少坑,终于有一套方案是可行的。
原理
如图,我们的目的是从D
连接到A
,但是由于A
在内网中,并不具备公网ip,因此实际上D
无法主动建立D->B->A
的通路。但是还有一种方案是:
A
主动建立A->B->C
的双向通路D
主动建立D->C
的双向通路C
负责转发来自A->B->C
和D->C
的数据
这样,我们建立起来了A<->B<->C<->D
的通路。
准备
- 一台你的具备公网ip的服务器
- 两台可能都在内网的电脑、服务器
步骤
配置公网服务器
首先,开放一个公网服务器的空闲端口,假设为
8022
修改
/etc/ssh/sshd_config
中GatewayPorts
、AllowAgentForwarding
为yes
,并重启sshd
服务:1
systemctl restart sshd
从防火墙 | 路由表开放
8022
端口:- 如果使用
firewall
:
1
2
3
4
5systemctl start firewalld
firewall-cmd --add-port=8022/tcp --permanent
firewall-cmd --add-port=8022/udp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --query-port=8022/tcp- 如果使用
iptables
:
1
2
3
4iptables -A INPUT -p udp -d 0/0 -s 0/0 --dport 8022 -j ACCEPT
iptables -A INPUT -p tcp -d 0/0 -s 0/0 --dport 8022 -j ACCEPT
netfilter-persistent save
netfilter-persistent reload- 如果使用
建立SSH隧道
在需要被访问的内网服务器上执行
1
2
3
4nohup ssh -fR 8022:127.0.0.1:内网服务器SSH端口 root@远程服务器IP -p 远程服务器SSH端口 "vmstat 30"
内网服务器SSH端口默认值: 22
远程服务器SSH端口默认值: 22
vmstat 30 是防止远程服务器主动断开长时间未通信的链接可能需要输入密码建立连接
登录内网服务器
1 | ssh -p 8022 内网用户名@公网服务器IP |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 RhythmLian's Blog!
评论