通过 VBox NAT 进行端口转发以从主机到 VirtualBox 客户机的 SSH 连接不起作用

通过 VBox NAT 进行端口转发以从主机到 VirtualBox 客户机的 SSH 连接不起作用

尽管 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,或者什么,但现在它起作用了。

相关内容