Vagrant无法连接到VM ​​

时间:2016-05-09 07:02:15

标签: ssh vagrant virtualbox

EDIT6:提交了官方路径错误:https://github.com/mitchellh/vagrant/issues/7512

EDIT5:当我vagrant destroyvagrant up时,一切都很容易。但是当我关闭虚拟机并将其重新打开时(有一天你必须重新启动电脑),它将无法再次运行。创建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的路径使用转义斜杠而不是反斜杠。这是一个错误吗?有没有办法手动设置VM的路径?我已将C:\Program Files\Oracle\VirtualBox放入我的路径中。

EDIT2:不要在WINDOWS 10上使用VAGRANT ,它在很多方面都有问题,而且VM还没有针对win10进行优化,你会遇到很多你无法解决的问题解决。还尝试了Hashicorp的Otto,也没有工作。翻录。

编辑:好的,所以当我vagrant destroyvagrant up时,安装10分钟后就像魅力一样。但是在我以任何方式重新启动PC或注销后,Vagrant无法使用私钥连接到VM,也无法使用登录/密码连接到VM。这是一个错误吗?

当我执行vagrant up时,VM正常启动,但Vagrant无法连接。它只是Warning: Remote connection disconnect. Retrying... 当我尝试通过vagrant ssh进行连接时,我只获得了ssh_exchange_identification: read: Connection reset by peer。当我检查VM的GUI时,它正在等待登录,当我使用defult登录/密码登录时,它正在按预期工作,因此问题必定是Vagrant无法连接到VM。

我试过了:

  1. 检查我的电脑是否支持虚拟化并检查它是否在
  2. 尝试使用密码而不是密钥
  3. 进行连接
  4. 配置网络adapetrs
  5. 关闭防火墙
  6. 清理重新安装
  7. 我在Windows 10上使用Vagrant 1.8.1和VirtualBox 5.0.20。 这是我的流浪文件:

    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
    

1 个答案:

答案 0 :(得分:1)

[编辑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则可以。这向我表明,在Virtualbox断开电缆连接后,Ubuntu 14.04上的DHClient确实请求了新租约,而Ubuntu 16.04却不是这样。

为了验证您遇到同样的问题,我想知道您是否可以运行以下测试并告诉我。

  1. 登录Trusty VM控制台(即在前台运行VM时显示的控制台)
  2. 安装' arping' (sudo apt-get -y install arping
  3. 创建以下脚本' sendARP.sh'

    #!/bin/bash
    
    IFACE=$(ifconfig | grep 'Link encap:Ethernet' | awk '{print $1}')
    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
    
  4. 将其设为可执行文件&ch; chmod + x sendARP.sh'
  5. 保存Trusty VM(vagrant suspend
  6. 从已保存状态(vagrant up
  7. 启动您的Trusty VM
  8. 登录Trusty VM控制台(即在前台运行VM时显示的控制台)
  9. 运行脚本' sudo ./sendARP.sh'
  10. 测试您是否可以通过SSH从远程位置/ Virtualbox主机连接
  11. 错误:

    https://github.com/mitchellh/vagrant/issues/7306

    https://www.virtualbox.org/ticket/15412