简洁版本
如果我从 Windows 10 主机运行 Ubuntu 客户 VirtualBox VM,我需要采取哪些步骤才能ssh
从远程 Linux 服务器进入 Ubuntu 客户 VM?
_______________________
[ ]
[ Windows 10 ]
[ ___________________ ] ____________________
[ [ ]] [ ]
[ [ Ubuntu VM (guest) <----HOW?---- SUSE remote server ]
[ [__________________]] [___________________]
[_____________________]
长版本
我很困惑,因为据我所知,如果我没有使用 Ubuntu 客户虚拟机,而是使用真正的 Ubuntu 机器,我就可以cat /etc/hosts
找到本地的 IP 地址,然后从远程找到:
user@remote --ssh--> user@<local IP>
我已经设置了 ssh 密钥,这样我就可以从 Ubuntu 客户机通过 ssh 进入 SUSE 远程服务器(即客户机~/.ssh/id_rsa.pub
已存储在远程~/.ssh/authorized_keys
)。也就是说,我已经可以:
ssh -Y user@remote
毫无困难,但我无法反过来做,因为我不知道我的客户的 IP 地址是什么。我已经尝试ssh
使用 Ubuntu GUI 中的“连接信息”中的 IP 地址。
另外要明确的是:
客户虚拟机Ubuntu 12.04 LTS(64 位)
VirtualBox 设置主要有:默认
启用网络适配器:NAT(电缆已连接,无端口转发)
我还没有设置 ssh 服务器,但我不确定它是否有必要(?),这是我目前的理解。
那么,假设我在 Windows 10 主机上运行 Ubuntu 客户 VirtualBox VM,我需要采取哪些步骤才能ssh
从远程 Linux 服务器进入 Ubuntu 客户 VM?
答案1
当您位于路由器后面时,这通常称为“双 NAT”情况。您必须从边界路由器转发到 Windows 系统,然后在 VBox 中转发到 VM。您可能还必须将端口 22 从实际网络连接转发到 VBox NAT 适配器,但我对 Windows 的情况不太清楚。
不过,最终您最多需要在这里做三件事。它们都在 Windows 中,或者不在 Ubuntu Linux 中,因此您的大多数答案将在超级用户或其他地方。
(如果您在 Win10 所处的网络上的路由器后面)在网络上的路由器上设置端口转发,将端口 22 转发到 Windows 10 系统。
设置 Windows 防火墙以允许端口 22 上的入站连接。 您可能还需要在 VM 网络设置中指定将端口 22 从入站网络适配器转发到 NAT 网络。
在 VirtualBox 中的 NAT 网络上设置 NAT 转发规则,将主机上的端口 22 转发到虚拟机上的端口 22。
一个稍微好一点的方法来绕过第 2 步和第 3 步,就是使用桥接模式在虚拟机网络设置中;这将从与 Windows 10 系统连接的同一网络获取 IP,然后您可以在边缘路由器(步骤 1)将端口 22 端口转发到网络分配给虚拟机本身的 IP。这比必须进行多次跳转和配置才能使端口 22 正常工作要轻松一些。
注意:一些 ISP 会过滤端口 22,因此端口 22 的流量将无法到达系统;如果是这种情况,您可能必须设置比端口 22 更高的端口(例如 2022 或另一个非标准端口 >1024)。
至于查找来宾的 IP,该信息将在 Linux 来宾的输出中ifconfig -a
或ip -4 addr list
Linux 来宾中。这是所有部分中最简单的部分,因为这将是相同的,无论是桥接还是 NAT。
答案2
你需要port forwarding
设置Windows 10 VM player
您需要在 Windows 10 机器上设置外部端口,该端口将转发service port
到virtual machine
。NAT network