如何从同一 LAN 上的另一台 PC 通过 SSH 连接到具有 NAT 的 Windows 主机上的 VirtualBox VM?

如何从同一 LAN 上的另一台 PC 通过 SSH 连接到具有 NAT 的 Windows 主机上的 VirtualBox VM?

我在 Windows 11 主机上有一个 Ubuntu 20.04 VM(VirtualBox)。

网络通过 NAT 连接。

我在 VirtualBox 中进行了如下端口转发:

Name | Protocol |  Host IP    |  Host Port | Guest IP   |  Guest Port
SSH  |   TCP    |  127.0.0.1  |    2222    | 10.0.2.10  |     22

所以现在我可以通过 PuTTY 从 Windows 主机通过 SSH 连接到 VM,127.0.0.1:2222没有任何问题。

我的 LAN 上该主机的 IP 是192.168.10.15。因此,我尝试从另一台 Windows PC 通过 ssh 连接到该 VM,192.168.10.15:2222但得到的是Connection timed out

因此我想也许 Windows 主机正在阻止入站流量,所以我打开了所有端口以防万一(用于测试) - 连接仍然超时。

因此我在路由器的 IP 上添加了端口转发规则192.168.10.15

Name: SSH
External Port Start: 2200
External Port End: 2200
Protocol: TCP
Internal Port Start: 2222
Internal Port End: 2222
IPv4: 192.168.10.15

然后我尝试通过 SSH 192.168.10.15:2200,但仍然没有结果。

我甚至尝试了各种组合:

192.168.10.15:2222,,192.168.10.15:22但都超时了。

我甚至在尝试通过 SSH 连接到另一台 PC 的 Windows PC 上将所有端口添加到出站规则,但仍然没有结果

问题是什么?

答案1

如果您只想直接连接到主机,则路由器不需要端口转发规则。您可以直接连接到主机。“端口转发”的目的是翻译地址 – 例如,当 ssh 连接到路由器的公共 (WAN) 地址时,它会将目的地转换为您计算机的 LAN 地址。但是当您已经在同一个 LAN 中时,您可以直接说ssh 192.168.10.15,则无需进行转换。(事实上,直接 LAN 连接甚至不会通过路由器根本无法应用端口转发。)

这里真正的问题是你的VirtualBox 的端口转发规则只告诉它监听 127.0.0.1(环回地址)。这意味着它只接受建立的连接127.0.0.1 完全匹配 – 192.168.10.15 是同一台机器并不重要;连接的目标地址必须与监听地址完全匹配。

如果希望它监听,请将“主机 IP”更改为 0.0.0.0全部主机拥有的 IP 地址。

相关内容