【机器人】autossh实现反向SSH隧道
·
问题:现有两台服务器,一台为ubuntu操作系统(ROS环境),IP:114.215.200.174,另外一台是CentOS(中转服务器), IP:47.111.169.128, 我现在想通过centos上的2222端口映射到ubuntu上的22端口,从而且实现反向隧道的功能。
✅ 步骤
① 在CentOS服务器编辑 sshd_config
sudo nano /etc/ssh/sshd_config
找到(或添加)以下两行,确保前面没有 # 且值正确:
AllowTcpForwarding yes
GatewayPorts yes
说明:
AllowTcpForwarding yes:允许客户端创建端口转发(反向隧道)。GatewayPorts yes:允许反向隧道绑定在 0.0.0.0,而不只是 127.0.0.1。
保存后退出(在 nano 里按 Ctrl+O 回车保存,Ctrl+X 退出)。
② 重启 SSH 服务
sudo systemctl restart sshd
③ 回到Ubuntu(114.215.200.174)执行 autossh
如果尚未安装autossh,请先安装
sudo apt install autossh -y
为了让端口能从外部访问,请在命令里明确指定绑定地址为 0.0.0.0:
autossh -M 0 -N -R 0.0.0.0:2222:localhost:22 root@47.111.169.128
注意:如果你只写
-R 2222:localhost:22,默认绑定在 127.0.0.1:2222,仅能在阿里云服务器本机访问。
加上0.0.0.0:后,别人也可以从外网访问。
也可以这么写(本人实际上也是这么操作的),-f是后台执行的意思
ssh -fN -R 2222:localhost:22 root@47.111.169.128
④ 在CentOS服务器47.111.169.128上检查监听
ss -tnlp | grep ':2222' || sudo netstat -tnlp | grep ':2222'
如果看到类似:
LISTEN 0 128 0.0.0.0:2222 ...
就表示反向隧道 已经成功建立。
⑤ 从任意机器(含公网)测试连接
ssh -p 2222 root@47.111.169.128
⑥ 如果还不通,检查安全组
在 阿里云控制台 → ECS → 安全组规则 里:
-
入方向添加一条规则:
- 协议类型:TCP
- 端口范围:2222
- 授权对象:
0.0.0.0/0(或指定 IP 段)
保存后再测试。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)