流浪者卡在连接超时重试中

我的流浪汉昨晚工作得很好。我刚刚打开PC,点击vagrant up,这是我得到的结果:

==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
default: Adapter 2: hostonly
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...

有人吃过这个吗?vagrant在网络上还没有被广泛报道,我也找不到发生这种情况的原因。

309794 次浏览

我解决了这个问题,如果其他人有类似的问题,我会回答。

我所做的是:我启用了虚拟框的GUI,让它在启动时等待输入,以选择我是想直接引导到ubuntu还是safemode等等。

要打开GUI,你必须把这个放在你的vagrant配置Vagrantfile中:

config.vm.provider :virtualbox do |vb|
vb.gui = true
end

如果你不想启用GUI,然后不得不禁用它,你也可以从Oracle安装扩展包:

http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html#extpack

然后把这个放在你的Vagrantfile中来启用VRDP:

vb.customize ["modifyvm", :id, "--vrde", "on"]

现在您可以使用RDP按需连接到您的盒子,而不需要运行SSH或一直打开GUI。

当你被上面描述的方式困在你的流浪机器上时,不需要以gui模式启动(没有X服务器是不可能的)。

当您的虚拟机正在引导时,在一个单独的终端窗口中,只需找出正在运行的机器的id。

vboxmanage list runningvms

结果是这样的:

"projects_1234567890" {5cxxxx-cxxx-4xxx-8xxx-5xxxxxxxxxx}

通常,VM只是等待您在引导加载程序中选择一个选项。你可以用controlvm向虚拟机发送适当的键码(在本例中是输入):

vboxmanage controlvm projects_1234567890 keyboardputscancode 1c

就是这样。虚拟机将继续启动过程。

这是流浪者的新“特征”。看看这里: https://github.com/mitchellh/vagrant/issues/3329 < / p >

他们将把“错误”改为“警告”。它只是告诉你机器还没有启动,它正在尝试连接…

我在一台Windows 8.1的机器上遇到了同样的问题。连接超时和启用gui根本没有用,屏幕是黑色的。在我的情况下,修复是禁用“超V”

引用自Vagrant文档https://docs.vagrantup.com/v2/hyperv/index.html

警告:启用Hyper-V将导致VirtualBox、VMware和任何其他虚拟化技术不再工作。请参阅此博客文章https://www.hanselman.com/blog/SwitchEasilyBetweenVirtualBoxAndHyperVWithABCDEditBootEntryInWindows81.aspx,以获得一个简单的方法来创建一个引导条目,以引导没有启用Hyper-V的Windows,如果有时间你需要其他管理程序。

如果你在Windows 8或Windows 10上工作,这对我来说很管用:

  1. 更改BIOS设置以允许64位虚拟化。
  2. 以下是如何:
    • 使用高级启动重启PC(进入高级启动-'立即重启'-'故障排除'-'高级选项'-' UEFI固件设置'-'重新启动')
    • 在BIOS窗口内-转到“高级”菜单/选项卡-启用“英特尔虚拟技术”
    • 保存,退出。
    • 李< / ul > < / >

我在使用x64盒子(chef/ubuntu-14.04)时也遇到了同样的问题。

我更改为x32,它工作(hashicorp/precise32)。

FWIW—我的问题是由于使用了一个非常旧的配置文件而不是一个新的配置文件。使用新的配置文件(从而调整/改变DSL)立即解决了我的问题。

对我有帮助的是在BIOS中启用虚拟化,因为机器无法启动。

需要反复检查的一件事是,您的计算机BIOS中是否启用了硬件虚拟化。

我的问题是相同的超时字符串,但我只能在GUI中看到黑屏。

我刚刚安装的一台笔记本电脑一直显示同样的问题。经过几个小时的搜索,我终于找到了一个提示,看看BIOS是否启用了硬件虚拟化。

以下是我找到的帖子内容:

我发现仍然有一些用户遇到了这个问题。因此,我将尝试在下面总结一些可能的解决SSH超时问题的方法:

  • 确保你的防火墙或防病毒软件没有阻止程序(我怀疑这种情况会经常发生)
  • 给你的流浪机器一些超时时间。如果你的PC / Mac速度不是很快,虚拟机需要一段时间才能启动到SSH就绪状态,所以会出现超时。
  • 因此,在得出错误的结论之前,首先尝试让流浪者完全超时。
  • 如果流浪者完全超时,那么增加流浪者文件中的超时限制到几分钟,然后再试一次。
  • 如果这仍然不工作,然后尝试通过VirtualBox界面清洁启动您的流浪机器,并事先启用机器的GUI。如果GUI没有显示任何发生的事情(例如。只是黑屏,没有文本),而它是引导,然后你的流浪机器有问题。
  • 通过VB界面破坏整个机器并重新安装。
  • 删除用户文件夹Vagrant Images文件夹中的ubuntu镜像文件,重新下载并安装。
  • 你有支持64位硬件虚拟化的英特尔处理器吗?谷歌它。如果你这样做,请确保在你的Bios中没有禁用此功能的设置。
  • 如果你运行的是windows 7或windows 8,禁用hyper-v特性。谷歌禁用方法。
  • 确保您正在通过启用SSH的客户端运行。使用Git bash。下载: 李http://git-scm.com/downloads < / >
  • 安装32位版本的ubuntu,比如trusty32或precise32。只需更改vagrant文件中的版本,并在新目录中重新安装vagrant。
  • 确保你使用的是最新的vagrant和virtualbox版本。最后的办法:格式化你的电脑,重新安装windows,买一个英特尔酷睿之类的处理器。

希望这能有所帮助。

而不是ctrl-d-ing出虚拟框,因为我习惯做每当我ssh到任何东西,我相信流浪者更喜欢你进入另一个终端,并做一个:

vagrant halt

让盒子停下来。然后将回来导入VB就没有问题了。

我也遇到过同样的问题,但是上面提到的解决方案都不适合我! 我通过将Vagrant降级到1.6.2来解决这个问题,现在它可以工作了!< / p >

对我来说有用的是从BIOS允许64位操作系统(Ubuntu 13.10)上的64位虚拟化。

我在Vagrant 1.6.5和Virtual Box 4.3.16上也遇到了同样的问题。 https://github.com/mitchellh/vagrant/issues/4470中描述的解决方案对我来说很好,我只需要删除VirtualBox 4.3.16并安装旧版本4.3.12

我也有同样的问题。我认为问题可能是SSH密钥(错误的文件定位或其他东西,但我检查了很多次),但你可能总是在配置部分添加用户名和密码(不使用SSH密钥)和运行gui,所以Vagrantfile中的代码应该看起来或多或少如下所示:

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|


config.ssh.username = "vagrant"
config.ssh.password = "vagrant"


config.vm.provider "virtualbox" do |vb|
vb.gui = true
end
end

在我的情况下,即使GUI显示,我得到黑屏(没有错误或登录或其他任何可能性),在控制台,我得到Error: Connection timeout. Retrying...多次。我确保我在BIOS中启用了VT-x(虚拟化),我检查了许多Virtual Box和Vagrant版本的组合,以及许多Vagrant盒子(其中一些我在GUI中没有黑屏,但仍然有连接问题)。最后我更新了VirtualBox和Vagrant到最后的版本,问题仍然发生。

关键的事情是在运行vagrantup(与Vagrantfile中的GUI,如我上面所示)后,在VirtualBox中查看图标,如下图所示

enter image description here

虽然我在VirtualPC中没有错误(没有VT-x未启用的警告),但我的V图标早些时候是灰色的,因此这意味着VT-x被禁用。正如我说的,我一直在我的BIOS中启用它。

最后,我意识到问题可能是HYPER-V,我也安装并启用测试网站在旧的Internet Explorer。我去了Windows Control Panel -> Programs and functions / Software,从左边的菜单中选择Turn on or Turn off Windows functions(希望你能找到那些,我使用波兰Windows,所以不知道确切的英文名称)。我关闭Hyper-V,重新启动PC,在运行Virtual Box和vagrant up后,我终于没有错误,在GUI中,我有登录屏幕,我的V图标停止为灰色。

我浪费了很多时间来解决这个问题(和许多电脑重启),所以我希望这可能对任何在Windows上有问题的人有帮助-确保你在控制面板中关闭了Hyper-V。

将ubuntu32位安装到AMD64位上就成功了。我无法访问BIOs,因为它是一个受限制的环境,但我仍然能够让它与ubuntu/trusty32而不是ubuntu/trusty64一起工作

在Windows 7 SP1上使用Vagrant 1.6.3和VirtualBox 4.3.15

希望这能有所帮助。

以前切换到trusty32会有帮助,但现在情况又变得更糟了: 我尝试使用Homestead 2.0,现在我再次遇到连接超时问题, 这通常不是问题,因为切换到32位以前有帮助。 但现在我不能就这样加一条线 config.vm.box =“ubuntu / trusty32” 因为我们没有经典的宅基地。Yaml文件, 新2.0宅基地的价值观。Yaml文件似乎刚刚被插入 真正的一个在后台,没有Vagrantfile可用,我 可以手动编辑…

希望有人能帮忙……

有这个问题超过一个星期,尝试了所有的解决方案,

1. giving SSH username and password
2. Enabling GUI interface
3. Updated Virtual Box and Vagrant

毫无效果。

最终从这个链接得到解决方案

Google public DNS IP添加到你的Wifi Settings

under Network Preferences > Wifi > Advanced > DNS添加IP地址8.8.8.8

< p >完美工作。也许这可以帮助任何在Mac上有问题的人。 由于Skovmand < / p >

从virtualbox界面,我首先在“CD”上启动,并禁用硬盘启动。因此,它是从CD iso引导的,显然不是在预期的机器上…我希望这能有所帮助。我希望它也能让某人微笑……PEBCAK。

关闭虚拟机内部的iptables防火墙

我是这样解决的:

  • 我在Vagrantfile中启用了GUI界面(这是配置文件)
  • 我可以在Gui中使用标准用户名vagrant和密码vagrant登录运行中的虚拟机
  • 我关闭了虚拟机内部运行的iptables防火墙

这解决了我的问题,我发现,防火墙阻止了来自本地网络的所有ip,如192.168.x。X和10.x.x.x

/etc/iptables.d/199-allow-wan中添加一个规则,允许所有来自wan的连接:

ip46tables -A wan-input -j ACCEPT

(ip46tables是一个别名)参见这在我的《Vagrant》例子Freifunk社区中得到了证实

我有一个问题与现有的盒子(不确定什么改变),但我可以连接通过SSH,即使流浪者盒子未能启动。碰巧我的SSH密钥以某种方式改变了。

从流浪者根文件夹,我运行vagrant ssh-config,它告诉我密钥文件在哪里。我用puttygen打开它,然后它给了我一个新密钥。

在我的Linux客户机上,我编辑了~/.ssh/authorized_keys并将新的公钥放在那里。

现在一切都恢复正常了!

就我个人而言,Tunnelblick VPN软件阻断了连接。现在当我启动新的虚拟机时,我临时禁用Tunnelblick。

也许这是一个太简单的答案,以帮助许多人,但值得一试,如果你没有:做一个“流浪者暂停”,而不是“流浪者暂停”,然后重新启动VM与“流浪者up”。

我认为我的问题是由于一些“kworker”进程出现bug,并且在VM中不断超时,所以做硬重启似乎正确地重新加载进程,而保存和恢复只是在其破碎状态下恢复破碎的进程。

我的运行正常,然后这个“警告:远程连接断开。一遍又一遍——大概20遍——直到连接上。基于以上的答案,我只是

vagrant destroy
vagrant up

一切都很好。我的很简单,但我通过将Vagrantfile削减到config.vm.box = "ubuntu/trusty64"来做到这一点,它仍然在做。这就是为什么毁灭然后重新开始似乎是最好的选择。鉴于这些流浪汉图像的无国籍性质,我不明白为什么在每个情况下都不会奏效。我刚刚开始研究这个问题,我可能会发现这不是真的。

如果您正在使用包装层(如Kitchen CI),并且正在运行32b主机,则必须抢先安装Vagrant盒子。它们的默认提供程序是二进制文件的opscode“家族”。

所以在kitchen create default-ubuntu-1204之前,确保你使用:

vagrant box add default-ubuntu-1204 http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_ubuntu-12.04-i386_chef-provisionerless.box

如果您的主机不支持字大小虚拟化,则使用32b映像

Homestead.yaml中查找这一行:

config.vm.network "forwarded_port", guest: 80, host: 8080

并更改为:

config.vm.network "forwarded_port", guest: 80, host: 8000

然后在Homestead目录下运行:

vagrant destroy
vagrant up

看看它是否有效。

对于VMware提供商的用户来说,还有一个可能的解决方案: 对我来说,在同一台主机上删除并行安装的VirtualBox后,这个问题得到了解决。VMware和VirtualBox之间的网络接口明显冲突

我通过两次输入ˆC(或Windows上的ctrl+C)并退出连接失败屏幕来解决。

然后,我可以通过SSH (vagrant ssh)连接,并由我自己查看错误。

在我的例子中,这是一个输入错误的路径。

我解决这个问题的方法在这篇文章中没有提到,所以我把细节贴在这里,以防它能帮助到其他人。

造成这种情况的原因是,在机器启动后,流浪汉无法登录机器。造成这种情况的原因有很多,正如本文中提到的,比如机器无法一直启动,或者iptables防火墙阻止SSH。

在我的例子中,问题是我无意中设置了一个“private_network”,它的IP地址与内置的VirtualBox NAT网络(在我的例子中是10.0.2.0/24)在同一个子网中。这打乱了机器的NAT网络(但没有任何地方显示错误),由于vagrant通过NAT网络连接,因此即使机器正在运行且没有启用防火墙,它也无法连接。

Vagrant.configure("2") do |config|
config.vm.network "private_network", ip: "10.0.2.31"
end

解决办法是更新我的VagrantFile,并使用一个与VirtualBox的NAT网络不冲突的“private_network”IP。

Vagrant.configure("2") do |config|
config.vm.network "private_network", ip: "10.0.4.31"
end

我也遇到过同样的问题。我通过从BIOS设置中启用Virtualization来修复这个问题。

我也有同样的问题,但其他答案都不能完全解决我的问题。@Kiee的回答很有帮助,尽管我在GUI中看到的是黑色的屏幕(在左上角有下划线,虚拟框中的这个问题也在堆栈溢出中单独提出,同样没有帮助)。

最终,一个解决方案被证明非常简单:你的虚拟机的检查版本

更准确地说,我从别人那里得到了一个64位Debian的盒子,但Virtual box坚持把它当作32位的,这一点我没有注意到。要更改它,请打开虚拟框,然后打开终端并运行

vagrant up

排队等候

default: SSH auth method: private key

现在您可以按ctrl+C(或等待超时)并运行

vagrant halt

你的虚拟机不会被摧毁,所以你可以在虚拟盒子的菜单中看到它,但它会被关闭,所以你可以更改设置。在菜单中选择您的机器,单击“设置”->“通用”,并选择适当的“版本”,对我来说是“Debian(64位)”。在此类型vagrant up之后再次。

如果这是你的情况(或“设置”中的不同更改解决了你的问题),你可以从修复的输入中创建新框

vagrant package --output mynew.box

更多细节:主机32位Ubuntu 12.04,客户64位Debian 8.1, Virtual Box 5.0.14, Vagrant 1.8.1

在我从Vagrantfile中删除这一行后,我也遇到了同样的问题:

config.vm.network "private_network", type: "dhcp"

我把这行放回去后,VM加载正常。

我通过在/etc/fstab中添加一个新条目来测试我的流浪VM中挂载的文件夹。后来我注销了,跑了一个流浪汉,但当我跑vagrant up时,我得到:

SSH auth method: private key
Warning: Remote connection disconnect. Retrying...

我阅读了所有这些帖子,并尝试了所有似乎与我的情况相关的帖子(除了流浪者破坏,这肯定能解决我的问题,但在我的情况下是最后的手段)。@Kiee的帖子给了我一个想法,尝试直接从VirtualBox GUI引导我的虚拟机。在引导过程中,VM自动停止,并询问我是否要跳过挂载之前添加到/etc/fstab的测试文件夹。(这就是为什么vagrant无法启动VM的原因。)回答“NO”后,虚拟机启动没有问题。我登录了,从我的fstab中删除了顽皮的行,并关闭了虚拟机。

在那之后,流浪汉就能很好地踢足球了。

外卖吗?如果突然间vagrant无法引导回您的VM,请尝试直接从提供商引导(在我的情况下是VirtualBox)。您的引导可能挂起了与SSH完全无关的东西。

删除文件:

C:\Users\UserName\\.vagrant.d\insecure_private_key

然后运行:

vagrant up

这里有很多很好的答案,我不能全部读完,但是,我只是来给我的一点贡献。我有两个不同的问题:

  1. vagrant up无法找到我的ssh 'id_rsa'(因为当时我还没有它): 我运行ssh-keygen -t rsa -b 4096 -C "myemailaddress@mydomain.com",基于这篇GitHub的文章, voilá,逐步通过它;

  2. 然后,我得到了同样的问题"警告:连接超时。重试…",永远… 所以,在阅读了很多之后,我重新启动了我的系统,并查看了我的BIOS (F2到达那里,在PC上),并且有虚拟化禁用。我已经启用,保存,并再次启动系统,以检查它是否有任何改变

在那之后,vagrant up工作得很好!现在是凌晨4点,但它还在跑!多酷啊,hã?:D正如我所知道的,很少有像我这样的受虐狂开发人员,会在Windows上尝试这一点,特别是在Windows 10,我只是不能忘记来这里并留下我的话…另一个重要的信息,是,我试图设置Laravel 5,使用Homestead, VirtualBox,作曲家等。这是有效的。所以,希望这个答案能对你有所帮助,就像这个问题和答案对我有所帮助一样。祝福你。G-bye !

当我杀死腻子过程时,我解决了这个问题。因为我同时运行了git-ssh和putty。他们似乎在争夺ssh访问权。一个就够了。

对我来说,这是流浪者和虚拟盒子之间的兼容性。

我在windows 10上,我所做的就是卸载流浪者和虚拟盒子

然后安装一个旧版本的虚拟盒子,特别是4.3.38版本(也为这个版本安装扩展包)

然后安装最新版本的vagrant(目前1.8.5)

从那以后,它起作用了。

我在VirtualBox中运行vagrant/VirtualBox时得到了这个。我通过在主机上运行流浪机器来解决这个问题。

就像有些人已经指出的那样,如果VirtualBox映像没有正确引导,就会出现错误。对我来说,在《Vagrant》中使用GUI模式并没有太大帮助,因为它只显示一个黑色窗口。在virtualbox GUI中,我检查了虚拟机的设置,发现操作系统设置不正确(Debian 32而不是64位)。

所以我只能建议手动检查虚拟机的VirtualBox设置,让虚拟机启动,而不是首先使用Vagrant。

我找到的解决方案是检查连接到NAT的适配器1中的电缆连接选项。我真的不知道,这是我的第4个流浪者盒子,但这是唯一一个没有选中电缆连接选项的盒子,检查后,它工作了。 NAT电缆连接 < / p >

我对这个问题的解决方案是,我的旧笔记本电脑启动时间太长了。我打开虚拟盒子,连接到盒子,等待屏幕加载。花了大约8分钟。

然后它连接并安装了我的文件夹,继续运行。

有时候要有耐心!

SSH连接在初始启动时超时可能与多种原因有关,例如:

  • 检查BIOS中是否启用了虚拟化(根据评论),
  • 系统等待用户交互(例如共享分区未就绪),
  • 你的私钥不匹配(通过vagrant ssh-config检查配置),
  • 引导过程需要更长的时间(尝试增加config.vm.boot_timeout),
  • 它从错误的驱动器引导(例如从安装程序ISO),
  • 虚拟机防火墙配置错误(例如iptables配置),
  • 本地防火墙规则、端口冲突或与VPN软件冲突,
  • sshd错误配置。

要调试这个问题,请运行--debug选项或如下:

VAGRANT_LOG=debug vagrant up

如果没有什么明显的,那么尝试从另一个终端连接到它,通过vagrant ssh或通过:

vagrant ssh-config > vagrant-ssh; ssh -F vagrant-ssh default

如果SSH仍然失败,尝试使用一个GUI(例如config.gui = true)运行它。

如果不是,检查正在运行的进程(例如:vagrant ssh -c 'pstree -a')或验证你的sshd_config


如果它是一次性虚拟机,你总是可以尝试destroy它和up它。

你也应该考虑升级你的Vagrant和Virtualbox。


有关更多信息,请查看调试和故障处理页面。

检查CPU在BIOS设置中的虚拟化是否已启用。

我的解决方案完全不是上面这些。我在Windows 7主机上运行Ubuntu 14作为来宾。我一直运行着这个流浪盒子,但是在几个月没有使用它之后,我再次启动它,它一直出现SSH连接超时。结果是密钥对不工作——所以我根据这个页面上的说明将流浪公钥复制到Ubuntu中。但这还不是全部。然后我发现我的基础箱中的私钥与私钥在这里不同。将此私钥作为vagrant_private_key文件放入C:\Users\your-user.vagrant。d\boxes\vagrant-box-name\nnnnnnnn\virtualbox在将公钥放入Ubuntu后修复了这个问题。

我发现在MacOS上使用VirtualBox将此添加到Vagrantfile将让你更进一步:

config.vm.provider 'virtualbox' do |vb|
vb.customize ['modifyvm', :id, '--cableconnected1', 'on']
end

我是这样做的:

在“流浪者”之后;启动虚拟机,关闭虚拟机,在virtualbox中进入新的虚拟机设置。然后去“网络”;→“Advanced"

适配器类型:我从"Intel PRO xxxxxx "“;PCNet-Fast"(或除Intel PRO以外的任何适配器都可以工作)

在我的情况下,给它一个静态IP地址,简单地解决了问题:

config.vm.network "private_network", ip: "192.168.50.50"

我分享这些只是为了将来能帮助到其他人。上面的Rubo77给了我这个答案的灵感。

在我的流浪文件中取消注释两行后,我遇到了这个连接超时循环。

vb.gui="true"
config.vm.network "forwarded_port", guest: 80, host: 8080

显然,第一行出现的GUI会询问你是想跳过安装还是让vagrant手动安装。我把它注释回来后就可以登录了,但是我仍然可以看到“连接中断”。在终点站重试。

于是我钻进我的“流浪汉”,敲了字。

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

然后流浪汉重新加载,并没有遇到任何连接错误。然而,这并不接受所有传入的流量。所以你可能想要添加规则,只允许端口8080,如果你要长时间使用你的bos。

Digital Ocean提供了一个很好的教程,教你如何在iptables中添加规则。

记住安装iptables-persistent来保存防火墙配置

遇到类似的问题ubuntu / bionic64

通过启用Vagrantfile中的gui,我可以使用默认的流浪的/的流浪汉登录

config.vm.provider "virtualbox" do |vb|
vb.gui = true
end

然后执行如下命令复位防火墙

$ ufw force --reset

然后重新启动系统现在这次没有 UI
能够引导没有任何问题

在进行重置之前,请确保保留防火墙规则的备份