如何允许用户通过 SSH 连接到部署在主机上的虚拟机而无需访问主机本身

如何允许用户通过 SSH 连接到部署在主机上的虚拟机而无需访问主机本身

我有一台 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]

在用户端

相关内容