尽管 VirtualBox 投入了大量的工作来简化这个过程,但我真的无法让它正常运行。
目标:能够运行无头 VirtualBox VM,我可以通过主机 SSH 进入。
当我尝试从主机通过 SSH 连接到客户机时,当前错误消息:
$ ssh -p 2222 user@localhost
ssh_exchange_identification: Connection closed by remote host
SSH 在客户虚拟机上运行良好,客户机可以毫无问题地通过 SSH 连接到自身。我非常确定问题出在从主机到客户机的连接转发上,因为我尝试通过 SSH 连接到客户机的尝试甚至没有出现在客户机的 SSH 日志文件中。因此,连接一定永远无法到达机器。
VirtualBox 的当前配置:
我遵循了通过 VB NAT 进行端口转发的两种主要方法,如 VBox 手册和各种论坛中所述。我使用了“老”方法:
$ VBoxManage setextradata "VM Name Here" \
"VBoxInternal/Devices/e1000/0/LUN#0/Config/guestssh/Protocol" TCP
$ VBoxManage setextradata "VM Name Here" \
"VBoxInternal/Devices/e1000/0/LUN#0/Config/guestssh/GuestPort" 22
$ VBoxManage setextradata "VM Name Here” \
"VBoxInternal/Devices/e1000/0/LUN#0/Config/guestssh/HostPort" 2222
以及“新”的方式,从VBox 手册:
VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"
我知道第一组命令生效了,因为我可以在 VM 的 *.vbox XML 配置文件中看到它们,并且我知道第二组命令有效,因为当我查看时:
VBox --> (Select VM) --> Settings --> Networking --> Advanced --> Port Forwarding
我在对话框中看到了我创建的“guestssh”端口转发定义。
此外,我还添加了这一行:
sshd:ALL
到客户机的 /etc/hosts.allow,并且主机或客户机上均未运行防火墙。
主机是 Ubuntu 11.04。客户机是 Fedora 16。VirtualBox 是版本 4.1.0 r73009。
有人有什么想法吗?
[解决了]
好的,那么,显然问题出在客户虚拟机中,与防火墙有关:
1) iptables -L showed that everything was set to 'ALLOW'
2) Looking at the Firewall GUI, SSH was allowed through
3) I had disabled the Firewall from the GUI
这些都不能解决问题。
$ sudo systemctl stop iptables.service
也没有解决。但是:
$ sudo systemctl disable iptables.service
终于修复了。这似乎太过粗暴,但其他方面都不起作用。我不确定这是不是 bug,或者什么,但现在它起作用了。