为什么在Windows 7命令行上使用“Vagrant Up”时,Vagrant不能SSH到我的虚拟机?

6
每当我尝试执行Vagrant Up命令时,它会加载虚拟机并做得几乎正确,但由于我正在尝试使用Puppet来提供这个CentOS 6.3 minimal的服务,因此我需要在Vagrant Up期间使SSH工作(如果我想要它尽可能自主)。
我从Vagrant的INFO日志中获得以下信息:
DEBUG virtualbox_4_2:   - [1, "ssh", 2222, 22]
 INFO ssh: Connecting to SSH: 127.0.0.1:2222
 INFO ssh: SSH not up: #<Timeout::Error: execution expired>
 INFO subprocess: Starting process: ["C:\\Program Files\\Oracle\\VirtualBox\\VBoxManage.exe", "showvminfo", "c2e7375d-159f-4014-9bda-ff9914423f4c", "--machinereadable"]
DEBUG subprocess: Selecting on IO
DEBUG subprocess: stdout: name="Vagrant-Apache-Nick_1360372174"

根据调试信息:1. NAT端口转发规则可能无法正常工作,或者2. 您的主机(Windows)无法连接本地主机的2222端口(防火墙?)。请检查。 - Terry Wang
2个回答

10

在运行Vagrant Up时,您的Windows系统会尝试连接到SSH。如果您在命令行上键入:

set VAGRANT_LOG=INFO

你可能会看到它失败并尝试几次。它看起来像这样:

INFO ssh: Connecting to SSH: 127.0.0.1:2222

这是因为超时时间被设置为10。您可以通过在Vagrantfile中添加以下内容进行修改:

config.ssh.timeout = 300

你可以使用任何数字,但我建议选择 100 或更高的数字。

来源:

  1. 这位作者提供了一些有用的故障排除信息。
  2. Vagrantfile 的 Vagrant 文档
  3. Vagrantfile SSH 超时的 Vagrant 文档
  4. 调试的 Vagrant 文档
  5. 长时间的故障排除过程(保持微笑)

3
谢谢您设置VAGRANT_LOG=INFO,这太棒了! - hex
我也遇到了同样的问题,当我运行“vagrant up”命令时,它显示:default: SSH地址:127.0.0.1:2222default: SSH用户名:vagrantdefault: SSH认证方法:私钥default: 错误:连接超时。正在重试... - gkd

1
我知道我来晚了,但是在完整的一天里,我几乎遇到了完全相同的问题,直到我从Windows中删除Hyper-V,问题才神奇地得到解决。
我猜当我使用Docker for Windows进行测试时(不要与docker-machine混淆),它会影响我的Hyper-V。不确定为什么这个调整可以解决这个问题,但是在Docker for Windows似乎搞砸了我的VirtualBox之后(Docker for Windows和Local by FlyWheel / VirtualBox彼此冲突),它像魔法一样起作用。

enter image description here

希望这能对某人有所帮助!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接