您刚刚在VirtualBox来宾计算机中安装并运行了一些Linux发行版。同时,您发现无法创建从主机操作系统到新的VirtualBox来宾计算机的ssh(安全 shell )连接。 VirtualBox的默认行为不允许发生这种连接。
有两种(可能更多)的解决方案。第一个解决方案是创建桥接网络接口,并通过更改来宾的网络接口设置来链接虚拟来宾。这可能听起来并不容易,但通常效果很好,设置也很容易。第二种解决方案涉及将端口22转发到您的虚拟客户机的端口。此解决方案非常易于实现,但不适用于较旧的VirtualBox版本。
本文将指导您实施更简单的端口转发解决方案。首先通过执行以下命令检查您的VirtualBox版本是否支持NAT端口转发linux命令:
检查VirtualBox NAT转发的可用性
$ VBoxManage modifyvm | grep natpf
如果没有看到任何输出,则需要升级VirtualBox软件。接下来,在主机操作系统上打开一个终端。
创建SSH端口转发
查找您的虚拟访客计算机的名称:注意:以下linux命令需要由拥有上述虚拟机所有权的用户运行,因为此命令将仅显示当前用户拥有的虚拟机。在大多数情况下,它不是root用户。
$ VBoxManage list vms
执行以下linux命令在主机操作系统上,我们将来自端口2222的所有流量重定向到在名称为”Ubuntu_10.04″的来宾虚拟机上侦听的端口22。
$ VBoxManage modifyvm "Ubuntu_10.04" --natpf1 "host2guest-ssh,tcp,,2222,,22"
使用端口转发登录到来宾SSH
全做完了。现在启动您的来宾虚拟机,并通过以下命令切换到linux命令:
$ ssh -p 2222 username@localhost
如果您的来宾操作系统使用的是静态IP地址,则可以修改上述端口转发命令以指定来宾IP地址。
$ VBoxManage modifyvm "Ubuntu_10.04" --natpf1 "host2guest-ssh,tcp,,2222,10.0.2.220,22"
故障排除,
如果仍然无法通过SSH连接到来宾虚拟机,请检查以下内容:
- 检查您的主机操作系统是否正在侦听端口2222
$ netstat -ant | grep 2222
- 检查sshd是否已在来宾操作系统上安装并运行。