Vagrant / virtualbox没有SSH连接和超时(Windows)

时间:2017-04-04 08:47:49

标签: vagrant virtualbox nat

我试图设置这台机器:https://github.com/ByteInternet/hypernode-vagrant

当我vagrant up时出现以下错误:Timed out while waiting for the machine to boot.

错误的完整上下文:

$ vagrant up
Bringing machine 'hypernode' up with 'virtualbox' provider...
==> hypernode: Will use PHP 7. If you want PHP 5.5 instead change the php version in local.yml.
==> hypernode: Checking if box 'hypernode_php7' is up to date...
==> hypernode: Clearing any previously set forwarded ports...
==> hypernode: Clearing any previously set network interfaces...
==> hypernode: Preparing network interfaces based on configuration...
hypernode: Adapter 1: nat
hypernode: Adapter 2: hostonly
==> hypernode: Forwarding ports...
hypernode: 80 (guest) => 8080 (host) (adapter 1)
hypernode: 3306 (guest) => 3307 (host) (adapter 1)
hypernode: 22 (guest) => 2222 (host) (adapter 1)
==> hypernode: Running 'pre-boot' VM customizations...
==> hypernode: Booting VM...
==> hypernode: Waiting for machine to boot. This may take a few minutes...
hypernode: SSH address: 127.0.0.1:2222
hypernode: SSH username: vagrant
hypernode: SSH auth method: private key
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period.

If you look above, you should be able to see the error(s) that
Vagrant had when attempting to connect to the machine. These errors
are usually good hints as to what may be wrong.

If you're using a custom box, make sure that networking is properly
working and you're able to connect to the machine. It is a common
problem that networking isn't setup properly in these boxes.
Verify that authentication configurations are also setup properly,
as well.

If the box appears to be booting properly, you may want to increase
the timeout ("config.vm.boot_timeout") value.

当我手动启动VM时,我可以看到网络无法正常工作。没有联系。当我将VM的设置更改为桥接网络时,网络确实有效。但是流浪者被配置为NAT。因此,我在设置或流浪文件中所做的任何更改似乎都会重置。

我在两台不同的PC上尝试了Vagrant 1.9.3,1.9.2和1.9.0。我使用的是Virtualbox 5.1.18。当我过滤时,带有“NAT”的日志会看到以下错误(这不是完整的日志,只有一小部分)

00:00:00.575454 SUP: Loaded VMMR0.r0 (C:\Program     Files\Oracle\VirtualBox\VMMR0.r0) at 0xfffff80c897b0000 - ModuleInit at     fffff80c897d3590 and ModuleTerm at fffff80c897d3a80 using the native ring-0 loader
00:00:01.681747 Driver = "NAT" (cb=4)
00:00:01.962037 SUP: Loaded VBoxDDR0.r0 (C:\Program Files\Oracle\VirtualBox\VBoxDDR0.r0) at 0xfffff80c898d0000 - ModuleInit at         0000000000000000 and ModuleTerm at 0000000000000000 using the native ring-0 loader
00:00:02.196495 NAT: Guest address guess set to 10.0.2.15 by initialization
00:00:02.204465 NAT: DNS#0: 192.168.178.1
00:00:02.271317 NAT: Failed to redirect TCP 127.0.0.1:2222 -> 0.0.0.0:22 (Unknown error)
00:00:02.271732 NAT: Failed to redirect TCP 0.0.0.0:3307 -> 0.0.0.0:3306 (Unknown error)
00:00:02.272033 NAT: Failed to redirect TCP 0.0.0.0:2200 -> 0.0.0.0:80 (Unknown error)
00:00:09.976199 NAT: Link up
00:00:39.428974 NAT: DHCP offered IP address 10.0.2.15
00:00:39.429404 NAT: DHCP offered IP address 10.0.2.15
00:03:02.167191 NAT: DHCP offered IP address 10.0.2.15
00:03:02.167820 NAT: DHCP offered IP address 10.0.2.15
00:07:58.531621 NAT: Zone(nm:mbuf_cluster, used:0)
00:07:58.532221 NAT: Zone(nm:mbuf_packet, used:0)
00:07:58.532232 NAT: Zone(nm:mbuf, used:1)
00:07:58.532419 NAT: Zone(nm:mbuf_jumbo_pagesize, used:0)
00:07:58.532961 NAT: Zone(nm:mbuf_jumbo_9k, used:0)
00:07:58.533255 NAT: Zone(nm:mbuf_jumbo_16k, used:0)
00:07:58.533424 NAT: Zone(nm:mbuf_ext_refcnt, used:0)
00:07:58.536529 Changing the VM state from 'DESTROYING' to 'TERMINATED'

如何解决或调试此问题?

更新

最近几天我还尝试使用下面列出的不同版本的virtualbox和Vagrant而没有任何结果:

  • Virtualbox 5.0.18
  • Virtualbox 5.0.20
  • Virtualbox 5.0.36
  • Vagrant 1.9.3

我还尝试了另一个盒子,它有同样的问题。所以它似乎不是盒子而是主机。

此外,我在Windows 7计算机上尝试了一个具有完全相同结果的设置。我想我在配置中遗漏了一些内容,但我不知道是什么,因为没有明确的指南可以在Windows机器上运行。

更新2 :我尝试过的机器是否可以支持这种设置?我尝试在BIOS中查找虚拟化选项。

更新3 :当我从主机{@ 1}}向访客发送时,我会收到以下错误消息。 SSH服务已在guest虚拟机上启动并运行。我查看了ssh -v 127.0.0.1 -p 1222

sshd service status

更新4:我无法ping客户机上的任何互联网IP或域。

更新5:已解决!现在切换到Linux已经有一段时间了。有史以来最好的决定:D

2 个答案:

答案 0 :(得分:2)

首先,将第一个接口更改为NAT是正常行为。这是为了使流浪工作的要求。

你可以检查两件事: 1)偏好>网络> NAT的网络。 (设置应该是这样的):

network settings

2)确保您已连接虚拟电缆

cable connected

3)也许你可以尝试另一个流浪盒。

答案 1 :(得分:0)

当我在 Windows 10 专业版上出现此错误时:

    ...
    homestead: SSH auth method: private key
Timed out while waiting for the machine to boot. ...
...

我发现我需要做的就是在命令行上运行时打开 VirtualBox GUI 并选择 VM

vagrant reload --provision

如果 GUI 关闭,它会反复超时,引发上述错误。

如果 GUI 已打开,则该过程将照常继续,没有错误,一切都开始工作。

我还发现有时在自动重启 Windows 后,我的网络适配器没有安装 VirtualBox NDIS6 Bridged Networking Driver,这也会导致此错误。

这可以通过打开网络连接属性并点击 Install -> Service -> Oracle Corporation -> VirtualBox NDIS6 Bridged Networking Driver 安装驱动程序来解决。

Windows 10 NDIS6 Bridged Networking Driver installation dialogs

它应该直接出现在列表中,而无需安装驱动程序,但如果您之前从未安装过该驱动程序,那么这可能会让您完成驱动程序安装过程。

在 Windows 上,包含该驱动程序的文件夹的典型路径如下。您可能不需要手动安装任何东西,但如果您这样做了,请打开该文件夹,然后Right-Click -> Install VBoxNetFlt.inf 文件。

%ProgramFiles%\Oracle\VirtualBox\drivers\network\netflt