Vagrant 无法连接到虚拟机
Vagrant can't connect to the VM
EDIT6:提交了官方路径错误:https://github.com/mitchellh/vagrant/issues/7512
EDIT5:当我执行 vagrant destroy
和 vagrant up
时,一切都很容易。但是当我关闭 VM 并重新打开它时(有一天你必须重新启动你的 PC),它不会再工作了。创建 VM 时 vagrant up
的顺序有问题,或者 VirtualBox 有问题。销毁和重建 VM 不是选项,导致数据库迁移,一切至少需要 ~30 分钟。无论哪种方式,不要在 WINDOWS 10.
上使用 VAGRANT
EDIT4:我降级到 Virtual Box 5.0.0.10,修复了错误的路径问题,但错误 Command not in installer
仍然存在。
EDIT3:当我进入 vagrant up --debug
时,我发现它在循环。它进入行
INFO subprocess: Starting process: ["C:/Program Files/Oracle/VirtualBox/VBoxManage.exe", "showvminfo", "8aaee3a3-806f-4
8ad-9928-91e2b7baba5d", "--machinereadable"]
然后它
INFO subprocess: Command not in installer, restoring original environment...
VM 的路径使用正斜杠而不是反斜杠。这是一个错误吗?有没有办法手动设置虚拟机的路径?我已将 C:\Program Files\Oracle\VirtualBox
放入我的路径中。
EDIT2:不要在 WINDOWS10 上使用 VAGRANT,它在很多方面都有问题,而且 VM 还没有针对 win10 进行优化,你会得到一堆您将无法解决的问题。还尝试了 Hashicorp 的 Otto,也没有用。撕。
编辑:好的,所以当我执行 vagrant destroy
和 vagrant up
时,安装 10 分钟后,它就像一个魅力。但是在我重新启动我的 PC 或以任何方式注销后,Vagrant 无法连接到 VM,无论是使用私钥还是 login/password。这是一个错误吗?
当我vagrant up
时,虚拟机正常启动,但 Vagrant 无法连接。它只说 Warning: Remote connection disconnect. Retrying...
当我尝试通过 vagrant ssh
连接时,我只得到 ssh_exchange_identification: read: Connection reset by peer
。当我检查 VM 的 GUI 时,它正在等待登录,当我使用默认 login/password 登录时,它按预期工作,所以问题一定是 Vagrant 无法连接到 VM。
我试过了:
- 检查我的电脑是否支持虚拟化并检查它是否开启
- 尝试使用密码而不是密钥进行连接
- 配置网络适配器
- 关闭防火墙
- 彻底重新安装
我在 Windows10 上使用 Vagrant 1.8.1 和 VirtualBox 5.0.20。
这是我的 vagrant 文件:
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.provider :virtualbox do |vb|
vb.memory = 2048
vb.gui = true
vb.cpus = 2
end
config.vm.network :private_network, type: "dhcp"
config.vbguest.auto_update = false
config.ssh.insert_key = false
config.vm.provision :shell, path: "bootstrap.sh"
end
[编辑 2016 年 6 月 17 日]
使用 Virtualbox 5.0.22 应该可以解决这个问题。
https://www.virtualbox.org/wiki/Changelog
https://www.virtualbox.org/ticket/15412
[下面是原始答案]
与我之前的回答相比,我现在认为我没有遇到与您在此处描述的相同的问题。但是我仍然认为你遇到了不同的变体问题。
根据从 Virtualbox 开发人员收到的反馈 https://www.virtualbox.org/ticket/15412 我了解到 Virtualbox 5.0.20 包括对 NAT 转发规则的更改以解决其他错误。保存 VM 并再次启动时,Virtualbox 现在会拔掉网线 5 秒。这应该会触发 DHCP 客户端请求新的租约。然后 Virtualbox 使用此信息来推断 IP 地址和 NAT 应该工作。
在我的特殊情况下,我遇到这个问题 Ubuntu 16.04 作为来宾虚拟机,而 Ubuntu 14.04 它工作。这向我表明 Ubuntu 14.04 上的 DHClient 在 Virtualbox 断开电缆连接后确实请求新租约,而 Ubuntu 16.04 不是这种情况。
为了验证你是否遇到了同样的问题,不知能否运行下面的测试告诉我。
- 登录到 Trusty VM 控制台(即当您 运行 VM 在前台时显示的控制台)
- 安装 'arping' (
sudo apt-get -y install arping
)
创建以下脚本'sendARP.sh'
#!/bin/bash
IFACE=$(ifconfig | grep 'Link encap:Ethernet' | awk '{print }')
IP=$(ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1')
arping -c 1 -i $IFACE $IP
- 使其成为可执行文件'chmod +x sendARP.sh'
- 保存可信虚拟机 (
vagrant suspend
)
- 从保存的状态启动您的 Trusty VM (
vagrant up
)
- 登录到 Trusty VM 控制台(即当您 运行 VM 在前台时显示的控制台)
- 运行脚本'sudo ./sendARP.sh'
- 测试是否可以从远程位置/Virtualbox 主机通过 SSH 连接
错误:
EDIT6:提交了官方路径错误:https://github.com/mitchellh/vagrant/issues/7512
EDIT5:当我执行 vagrant destroy
和 vagrant up
时,一切都很容易。但是当我关闭 VM 并重新打开它时(有一天你必须重新启动你的 PC),它不会再工作了。创建 VM 时 vagrant up
的顺序有问题,或者 VirtualBox 有问题。销毁和重建 VM 不是选项,导致数据库迁移,一切至少需要 ~30 分钟。无论哪种方式,不要在 WINDOWS 10.
EDIT4:我降级到 Virtual Box 5.0.0.10,修复了错误的路径问题,但错误 Command not in installer
仍然存在。
EDIT3:当我进入 vagrant up --debug
时,我发现它在循环。它进入行
INFO subprocess: Starting process: ["C:/Program Files/Oracle/VirtualBox/VBoxManage.exe", "showvminfo", "8aaee3a3-806f-4
8ad-9928-91e2b7baba5d", "--machinereadable"]
然后它
INFO subprocess: Command not in installer, restoring original environment...
VM 的路径使用正斜杠而不是反斜杠。这是一个错误吗?有没有办法手动设置虚拟机的路径?我已将 C:\Program Files\Oracle\VirtualBox
放入我的路径中。
EDIT2:不要在 WINDOWS10 上使用 VAGRANT,它在很多方面都有问题,而且 VM 还没有针对 win10 进行优化,你会得到一堆您将无法解决的问题。还尝试了 Hashicorp 的 Otto,也没有用。撕。
编辑:好的,所以当我执行 vagrant destroy
和 vagrant up
时,安装 10 分钟后,它就像一个魅力。但是在我重新启动我的 PC 或以任何方式注销后,Vagrant 无法连接到 VM,无论是使用私钥还是 login/password。这是一个错误吗?
当我vagrant up
时,虚拟机正常启动,但 Vagrant 无法连接。它只说 Warning: Remote connection disconnect. Retrying...
当我尝试通过 vagrant ssh
连接时,我只得到 ssh_exchange_identification: read: Connection reset by peer
。当我检查 VM 的 GUI 时,它正在等待登录,当我使用默认 login/password 登录时,它按预期工作,所以问题一定是 Vagrant 无法连接到 VM。
我试过了:
- 检查我的电脑是否支持虚拟化并检查它是否开启
- 尝试使用密码而不是密钥进行连接
- 配置网络适配器
- 关闭防火墙
- 彻底重新安装
我在 Windows10 上使用 Vagrant 1.8.1 和 VirtualBox 5.0.20。 这是我的 vagrant 文件:
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.provider :virtualbox do |vb|
vb.memory = 2048
vb.gui = true
vb.cpus = 2
end
config.vm.network :private_network, type: "dhcp"
config.vbguest.auto_update = false
config.ssh.insert_key = false
config.vm.provision :shell, path: "bootstrap.sh"
end
[编辑 2016 年 6 月 17 日]
使用 Virtualbox 5.0.22 应该可以解决这个问题。
https://www.virtualbox.org/wiki/Changelog
https://www.virtualbox.org/ticket/15412
[下面是原始答案]
与我之前的回答相比,我现在认为我没有遇到与您在此处描述的相同的问题。但是我仍然认为你遇到了不同的变体问题。
根据从 Virtualbox 开发人员收到的反馈 https://www.virtualbox.org/ticket/15412 我了解到 Virtualbox 5.0.20 包括对 NAT 转发规则的更改以解决其他错误。保存 VM 并再次启动时,Virtualbox 现在会拔掉网线 5 秒。这应该会触发 DHCP 客户端请求新的租约。然后 Virtualbox 使用此信息来推断 IP 地址和 NAT 应该工作。
在我的特殊情况下,我遇到这个问题 Ubuntu 16.04 作为来宾虚拟机,而 Ubuntu 14.04 它工作。这向我表明 Ubuntu 14.04 上的 DHClient 在 Virtualbox 断开电缆连接后确实请求新租约,而 Ubuntu 16.04 不是这种情况。
为了验证你是否遇到了同样的问题,不知能否运行下面的测试告诉我。
- 登录到 Trusty VM 控制台(即当您 运行 VM 在前台时显示的控制台)
- 安装 'arping' (
sudo apt-get -y install arping
) 创建以下脚本'sendARP.sh'
#!/bin/bash IFACE=$(ifconfig | grep 'Link encap:Ethernet' | awk '{print }') IP=$(ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1') arping -c 1 -i $IFACE $IP
- 使其成为可执行文件'chmod +x sendARP.sh'
- 保存可信虚拟机 (
vagrant suspend
) - 从保存的状态启动您的 Trusty VM (
vagrant up
) - 登录到 Trusty VM 控制台(即当您 运行 VM 在前台时显示的控制台)
- 运行脚本'sudo ./sendARP.sh'
- 测试是否可以从远程位置/Virtualbox 主机通过 SSH 连接
错误: