问题:现有两台服务器,一台为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 段)

保存后再测试。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐