我有一台 UbuntuOS 主机(假设150.15.15.15
),并在该主机上部署了另一台 UbuntuOS 虚拟机(192.168.7.2
)。我想在主机上配置 SSH 隧道,以便远程用户无需先连接到主机即可连接到 VM。因此,
USER ---ssh [email protected]> HOST ---ssh [email protected]> VM
做一些类似的事情
USER ----ssh [email protected] -p ???----> VM
我试图追加
GatewayPorts yes
到/etc/ssh/sshd_config
主机上并在主机上执行
ssh -4 -R 2222:192.168.7.2:22 127.0.0.1
这样主机在端口 2222 上收到的流量就会传输到虚拟机。当我这样做时
netstat -tulpn
我看到端口2222
处于LISTEN
状态
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:2222 0.0.0.0:* LISTEN -
现在(正如我所料)应该有一个隧道允许远程用户使用命令连接到 VM
ssh [email protected] -p 2222
但得到了
ssh: connect to host 150.15.15.15 port 2222: Connection refused
我到底在哪儿走错了路?
答案1
您的netstat
输出显示端口 2222 仅在环回接口上监听。编辑后,您是否在主机上重新启动了 ssh 服务器/etc/ssh/sshd_config
,以使配置更改生效?
我尝试了与您的情况类似的情况,只是我在更改配置文件后重新启动了 sshd,我的netstat
输出显示
tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN -
0.0.0.0:2222
表示端口 2222 现在正在监听所有接口。并且从外部到端口 2222 的连接现在可以正常工作,并且可以按预期连接到目标计算机。
答案2
通过在主机上执行解决
socat TCP-LISTEN:2222,fork TCP:192.168.7.2:22 &
和
ssh -p 2222 -o StrictHostKeyChecking=no [email protected]
在用户端