如何直接访问远程计算机上运行的虚拟机?

如何直接访问远程计算机上运行的虚拟机?
  • 我本地Lubuntu的wifi IP地址是192.168.1.97

  • 远程Lubuntu的wifi IP地址是192.168.1.198,

  • 远程 Lubuntu 上运行的虚拟机的 IP 地址为 192.168.122.169。

我可以从本地机器访问虚拟机,通过 ssh 间接访问远程,然后通过 ssh 访问虚拟机。ssh [email protected]ssh [email protected]

我可以直接通过虚拟机访问本地机。ssh [email protected]

由于本地 Lubuntu 上的路由表,我无法直接从本地计算机访问虚拟机

$ ssh [email protected]
ssh: connect to host 192.168.122.169 port 22: No route to host

我可以直接从本地 Lubuntu 访问虚拟机吗?

  • 我是否需要修改本地 Lubuntu 和远程 Lubuntu 的路由表?

  • NAT 有帮助吗?

谢谢。

本地Lubuntu上的路由表为

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    600    0        0 wlx801f02b5c389
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.1.0     0.0.0.0         255.255.255.0   U     600    0        0 wlx801f02b5c389
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

远程Lubuntu上的路由表是

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    600    0        0 wlp5s0
192.168.1.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp5s0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

虚拟机上的路由表为:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.122.1   0.0.0.0         UG    0      0        0 ens3
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens3
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 ens3

答案1

使用ProxyJumpProxyCommand.

将其添加到您的~/.ssh/config

Host vmhost
    User t
    Hostname 192.168.1.198

Host vm
    Hostname 192.168.122.169
    User t
    ProxyJump vmhost

或者对于旧ssh版本ProxyJump vmhost

ProxyCommand ssh -q -W 192.168.122.169:22 vmhost

连接使用:

ssh vm

相关内容