反向 SSH 的原理
什么是反向SSH?
反向 SSH(Reverse SSH)是一种通过中间公网服务器建立隧道,从外网访问位于内网或防火墙后的服务器的方法。 它常用于实验室或公司内部服务器没有公网 IP 的情况,保证可以安全远程管理。
假设你的场景:
实验室服务器(内网 / 防火墙后) → 无公网直接访问能力
你的公网服务器(有公网 IP,可以被访问)
本地电脑 → 想远程操作实验室服务器
流程:
实验室服务器 ---[SSH Out]-> 公网服务器 ---[你本地 SSH]-> 公网服务器 ---[隧道]-> 实验室服务器
核心概念:
1.实验室服务器主动连接公网服务器(出站,不受防火墙限制)
2.建立一个 反向隧道:
- 在公网服务器上开一个端口(比如 2222)
- 映射回实验室服务器的 SSH(22)
3.本地通过公网服务器的这个端口,就能访问实验室服务器
命令示例
1.实验室服务器上执行(建立反向隧道)
ssh -N -R 2222:localhost:22 user@自己服务器公网IP
-R 2222:localhost:22→ 在 公网服务器 上开 2222 映射到实验室服务器的 22-N→ 不执行远程命令,只建立隧道- 这个命令执行后,公网服务器的 2222 就是通向实验室服务器的“入口”
2.本地电脑通过公网服务器访问实验室服务器
ssh -p 2222 user@自己服务器公网IP
这里user可以是实验室服务器上已经存在的用户,执行完,输入其密码,即可进行连接。
注意事项
1、保持反向隧道长期在线
普通 ssh -R 会话一旦断开,隧道就消失
使用 autossh 可以自动重连:
autossh -M 0 -N -f -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -R 2222:localhost:22 user@公网服务器IP
-f → 后台运行
ServerAliveInterval / ServerAliveCountMax → 避免意外断开
2、公网服务器防火墙/安全组
必须放行 TCP 2222(或你选择的端口)
在阿里云/腾讯云等,需要在安全组中添加规则
3、实验室服务器网络必须可用
即便是内网,也需要能发起外网连接(WIFI 或有出站权限的网线)
4、多端口或多用户场景
可以映射多个端口,例如 2223 → lab2、2224 → lab3
每个端口对应实验室不同服务器或用户
5、安全性建议
使用 SSH 密钥代替密码,提高安全性
隧道端口最好只绑定公网服务器 localhost 或指定 IP,避免被外网扫描。
6、掉线与重启问题
如果实验室服务器重启,隧道会消失
可以在实验室服务器设置 systemd service 启动 autossh 保持隧道

评论区
评论加载中...