Vagrant ssh 在 VirtualBox 上失败

Vagrant ssh 在 VirtualBox 上失败

当 vagrant up 进行到 ssh 部分时失败:

myterminal$ vagrant up
[default] VM already created. Booting if its not already running...
[default] Running any VM customizations...
[default] Clearing any previously set forwarded ports...
[default] Forwarding ports...
[default] -- ssh: 22 => 2222 (adapter 1)
[default] -- db2: 30003 => 30003 (adapter 1)
[default] Cleaning previously set shared folders...
[default] Creating shared folders metadata...
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] Failed to connect to VM!
Failed to connect to VM via SSH. Please verify the VM successfully booted
by looking at the VirtualBox GUI.

然后,当我随后尝试使用 vagrant ssh 或 vagrant reload 或类似方法进行连接时,我得到了以下信息:

myterminal$ vagrant reload
[default] Attempting graceful shutdown of linux...
SSH connection was refused! This usually happens if the VM failed to
boot properly. Some steps to try to fix this: First, try reloading your
VM with `vagrant reload`, since a simple restart sometimes fixes things.
If that doesn't work, destroy your VM and recreate it with a `vagrant destroy`
followed by a `vagrant up`. If that doesn't work, contact a Vagrant
maintainer (support channels listed on the website) for more assistance.

请帮忙!我真的很困惑。

亲切的问候,

路加

答案1

我在设置中发现了这个问题,并最终将其缩小到我在本地 hosts 文件上添加了一个名称这一事实。所以我有:

127.0.0.1 localhost myname myalias

删除myalias我添加的,它启动正常。感谢@saphirlazuli 提供的线索,它与网络有关。

答案2

我也遇到了与 Vagrant 网站“入门”中提供的框相同的问题。以下解决方案适用于本教程的框。

我在这里找到一个解决方案:https://github.com/mitchellh/vagrant/issues/391

  1. 在 VagrantFile 中,添加 gui 模式:config.vm.boot_mode = :gui
  2. 跑步vagrant up
  3. 在 GUI 中,使用用户“vagrant”登录(密码 =“vagrant”)
  4. 在 gui 中,运行sudo /etc/init.d/networking restart,在/etc/network/interfaces文件中,你现在必须有一个包含#VAGRANT-BEGIN [...]#VAGRANT-END
  5. vagrant reload在物理机上运行

答案3

对我来说,这是一个间歇性的问题,而且肯定与网络有关。我在 Vagrant GitHub 问题上找到了一些更有用的信息#391#455。我尝试在 VirtualBox 设置中删除未使用的仅主机网络(按照 GitHub 问题之一中推荐的潜在修复方法),但似乎没有帮助。

以 GUI 模式启动(如上一个答案中所述)是调试/修复问题的好方法。我发现这是因为无论出于什么原因,VM 都无法在启动时获取 IP 地址。以 GUI 模式启动,然后登录(vagrant/vagrant)并sudo dhclient在客户操作系统中运行将检索 IP 地址,并且 Vagrant 设置过程将成功完成。

仍在寻找永久的解决方案。

希望这可以帮助!

[编辑添加]:添加了一条有用的建议GitHub 问题 #455这涉及将以下配置添加到您的Vagrantfile

config.ssh.max_tries = 150

目前对我来说,这种方法是可行的,而且似乎很有道理,因为问题似乎与超时有关 - 增加尝试次数应该会增加 SSH 进程及时成功的概率。首先,这是一个间歇性问题,所以我会保留一段时间的判断,但祈祷它会起作用!感谢 karel1980 建议修复。

答案4

我的网卡类型最初设置为82540EM。我将其更改为Am79C973,现在 Vagrant up 每次都能正常工作。我启动了多个虚拟机,甚至重新启动了主机,它仍然有效。

命令是:

VBoxManage modifyvm yourmachinename --nictype1 Am79C973

请记住重新打包并将你的盒子重新添加到 Vagrant。

我在 Core i7-2600 机器上使用 VirtualBox 4.1.16 运行 Debian Squeeze 64 位作为主机和客户机。

相关内容