Vagrant卡住连接超时重试

tiste 发布于 2019-05-07 ssh 最后更新 2019-05-07 09:47 44 浏览

我的流浪者昨晚工作得很好。我刚打开电脑,打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...
有没有人有过这个?流浪病尚未广泛报道,我无法找到发生这种情况的原因。
已邀请:

isit

赞同来自:

如果您使用的是Windows 8或10,那么这对我有用:

  1. 更改BIOS设置以允许64位虚拟化。
  2. 以下是:
    • 使用高级启动重启PC(转到高级启动 - '现在'''''排除'''高级选项' - ''UEFI固件设置' - '重启')
    • BIOS内部窗口 - 转到“高级”菜单/标签 - 启用“英特尔虚拟技术”
    • 保存&退出。

gqui

赞同来自:

我必须解决这个问题的方式在这个帖子中没有提到,所以我在这里发布细节,以防它帮助其他人。 造成这种情况的原因是,流浪者在启动后无法进入机器。有这样的原因,正如这个线程所提到的,例如机器不能一直启动,或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

caut

赞同来自:

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

xsint

赞同来自:

我通过在/etc/fstab中添加一个新条目来测试我的vagrant VM中的已安装文件夹。后来我退出了,跑了流浪汉,但是当我跑了vagrant up时,我得到了:

SSH auth method: private key
Warning: Remote connection disconnect. Retrying...
我阅读了所有这些帖子并尝试了所有与我的案例相关的帖子(除了流浪汉的破坏,这肯定会解决我的问题,但在我的情况下是最后的手段)。 @Kiee的帖子让我想到尝试直接从VirtualBox GUI启动我的VM。在启动过程中,VM暂停,并询问我是否要跳过将之前添加的测试文件夹安装到/etc/fstab。 (这就是为什么vagrant无法启动VM的原因。)在回答'NO'后,VM启动没问题。我登录后,从我的fstab中删除了顽皮的行,并关闭了VM。 之后,流浪者能够正常启动。 带走?如果突然流氓无法启动回VM,请尝试直接从提供程序启动(在我的情况下为VirtualBox)。有可能你的引导挂起与SSH完全无关的东西。

gsint

赞同来自:

就我个人而言,Tunnelblick VPN软件阻止了连接。现在,当我启动新VM时,我暂时禁用了Tunnelblick。

ket

赞同来自:

从我的Vagrantfile中删除此行后,我遇到了同样的问题:

config.vm.network "private_network", type: "dhcp"
在我把这条线放回来之后,VM装好了。

pporro

赞同来自:

也许这对于帮助很多人来说太简单了,但是如果你没有这样做是值得尝试的:做一个“流浪汉停止”而不是“流浪汉暂停”,然后用“流浪汉”重新启动虚拟机。 我认为我的问题是由于某些“kworker”进程出现错误并且在VM中不断超时,因此进行硬重启似乎正确地重新加载进程,而保存和恢复只是在破坏状态下恢复已损坏的进程。

mneque

赞同来自:

删除文件:

C:\Users\UserName\\.vagrant.d\insecure_private_key
然后运行:
vagrant up

xatque

赞同来自:

我遇到了同样的问题,但是没有提到的解决方案对我有用! 我通过将Vagrant降级到1.6.2来解决它现在它的工作原理!

womnis

赞同来自:

这里有很多好的答案,我无法全部阅读,但是,我刚刚过来给了我一点贡献。我有两个不同的问题:

  1. vagrant up无法找到我的ssh'id_rsa'(因为当时我还没有找到它): 我根据this GitHub's article运行了ssh-keygen -t rsa -b 4096 -C "myemailaddress@mydomain.com",然后瞧瞧了这一点;
  2. 然后,我遇到了同样的问题“警告:连接超时。重试......”,永远......: 因此,经过大量阅读后,我重新启动了系统并查看了我的BIOS(F2到达那里,在PC上),并且禁用了虚拟化。我已经启用,保存并再次启动系统,以检查它是否已经改变了任何内容。
之后,vagrant up就像一个魅力!现在是早上4点,但它正在运行!多酷啊? :D据我所知,很少有像我这样的受虐狂开发人员会在Windows上尝试这一点,特别是在Windows 10上,我不能不忘记来到这里并留下我的话......另一个重要信息是,我试图建立Laravel 5,使用Homestead,VirtualBox,作曲家等。它已经奏效了。所以,希望这个答案有助于这个问题和答案帮助我。我最好的祝福。 G-再见!

bea

赞同来自:

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

gminus

赞同来自:

当您按照上述方式使用流浪汉机器时,无需以gui模式启动(如果没有X服务器,则无法启动)。 在VM启动时,在单独的终端窗口中,只需查找正在运行的计算机的ID。

vboxmanage list runningvms
这将导致如下所示:
"projects_1234567890" {5cxxxx-cxxx-4xxx-8xxx-5xxxxxxxxxx}
通常,VM只是在等待您在引导加载程序中选择一个选项。您可以使用controlvm将适当的密钥代码(在这种情况下, Enter )发送到vm:
vboxmanage controlvm projects_1234567890 keyboardputscancode 1c
而已。您的虚拟机将继续启动过程。

cnisi

赞同来自:

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

jquia

赞同来自:

如果这个问题超过一周,试过所有的解决方案,

1. giving SSH username and password
2. Enabling GUI interface
3. Updated Virtual Box and Vagrant
没有任何效果。 最后得到了this link的解决方案 将Google public DNS IP添加到您的Wifi Settings under Network Preferences > Wifi > Advanced > DNS添加IP地址8.8.8.8 工作得很好。可能这有助于任何在Mac中遇到问题的人。 谢谢Skovmand

cut

赞同来自:

如果您不想启用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一直打开。

podio

赞同来自:

这是流浪汉的新“特征”。看看这里: https://github.com/mitchellh/vagrant/issues/3329 他们会将“错误”更改为“警告”。它只是告诉你机器还没有启动,它正在尝试连接......

baut

赞同来自:

不管怎么说,当我进入任何东西时,我都不会按照虚拟框进行控制,我相信流浪者会更喜欢你进入另一个终端而做一个: vagrant halt 停止盒子。然后回到VB中就没有问题了。

nea

赞同来自:

我在Windows 8.1机器上遇到了同样的问题。连接超时和启用gui根本没用,屏幕是黑色的。在我的情况下修复是禁用“Hyper V” 引用Vagrant文​​档https://docs.vagrantup.com/v2/hyperv/index.html

Warning: Enabling Hyper-V will cause VirtualBox, VMware, and any other virtualization technology to no longer work. See this blog post https://www.hanselman.com/blog/SwitchEasilyBetweenVirtualBoxAndHyperVWithABCDEditBootEntryInWindows81.aspx for an easy way to create a boot entry to boot Windows without Hyper-V enabled, if there will be times you'll need other hypervisors.

nsit

赞同来自:

禁用VM内的iptables防火墙 这就是我解决它的方式:
  • 我在Vagrantfile中启用了GUI界面(这是配置文件)
  • 我可以使用标准用户名vagrant和密码vagrant
  • 登录Gui中正在运行的VM
  • 我在VM中禁用了正在运行的iptables防火墙
这解决了我的问题,我发现防火墙阻止了来自本地网络的所有IP,如192.168.x.x和10.x.x.x. 在/etc/iptables.d/199-allow-wan中添加规则以允许来自wan的所有连接:
ip46tables -A wan-input -j ACCEPT
(ip46tables是别名)请参阅this commit in my Vagrant example Freifunk community

fharum

赞同来自:

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

afuga

赞同来自:

我解决了这个问题,如果其他人有类似的问题,我会回答。 我做的是:我启用了虚拟框的GUI,看它是否在启动时等待输入,以选择是否要直接启动到ubuntu或safemode等。 要打开GUI,你必须把它放在你的流浪汉配置Vagrantfile中:

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

et_et

赞同来自:

我通过两次输入ˆC(或Windows上的ctrl+C)并退出连接失败屏幕解决了问题。 然后,我可以通过SSH(vagrant ssh)连接并查看我自己的错误。 在我的情况下,这是一个错误的路径。

kaut

赞同来自:

要仔细检查是否在您的机器的BIOS中启用了硬件虚拟化。 我的问题是同一串超时但我只能看到GUI中的黑屏。 我刚刚设置的笔记本电脑一直显示同样的问题。经过几个小时的搜索,我终于找到了一个提示,看看BIOS是否启用了硬件虚拟化。 这是我找到的帖子的内容: 我看到仍有一些用户遇到此问题。因此,我将尝试总结下面列出SSH超时问题的一些可能解决方案:

  • 确保您的防火墙或防病毒软件没有阻止该程序(我怀疑这种情况会经常发生)
  • 给你的流浪汉机器一些时间来实现超时。如果您没有非常快的PC / Mac,VM将需要一段时间才能启动到SSH就绪状态,因此会发生超时。
  • 因此,在断定有错误之前,首先尝试让流浪汉完全超时。
  • 如果vagrant完全超时,则将vagrant文​​件中的超时限制增加到几分钟,然后重试。
  • 如果仍然无效,请尝试通过VirtualBox界面清理启动流浪汉机器,并事先启用机器的GUI。如果GUI在启动时没有显示任何发生的事情(即只是黑屏,没有文本),那么你的流浪汉机器就会出现问题。
  • 通过VB界面销毁整台机器并重新安装。
  • 删除用户文件夹中Vagrant Images文件夹中的ubuntu图像文件,然后重新下载并安装。
  • 您是否拥有支持64位硬件虚拟化的英特尔处理器?去谷歌上查询。如果您这样做,请确保您的Bios中没有设置禁用此功能。
  • 如果您运行的是Windows 7或8,则禁用hyper-v功能.Google如何禁用。
  • 确保您正在运行启用SSH的客户端。使用Git bash。下载: http://git-scm.com/downloads
  • 安装32位版本的ubuntu,如trusty32或precise32。只需更改vagrant文​​件中的版本,然后在新目录中重新安装vagrant。
  • 确保您使用的是最新的vagrant和virtualbox版本。最后的度假村:格式化您的计算机,重新安装Windows并购买intel core isomething处理器。
希望有所帮助。

beos

赞同来自:

我遇到了同样的问题。我通过从BIOS设置启用Virtualization来修复此问题。

zrerum

赞同来自:

我对这个问题的解决方案是,我的旧笔记本电脑开机时间太长了。我打开Virtual Box,连接到盒子并等待屏幕加载。大约8分钟。 然后它连接并安装我的文件夹并继续。 有时候要耐心等待!

a_et

赞同来自:

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

seaque

赞同来自:

我发现的解决方案是检查连接到NAT的适配器1中的电缆连接选项。我真的不知道,这是我的第四个流浪盒,但这是唯一没有检查过电缆连接选项的盒子,检查后它就可以了。 NAT cable connection

hiure

赞同来自:

为VMware提供商的用户提供的另一种可能的解决方案: 对我来说,在同一主机上删除VirtualBox的并行安装后问题得以解决。 VMware和VirtualBox之间的网络接口显然是相互矛盾的

det

赞同来自:

它曾经帮助切换到trusty32,但现在情况再次恶化: 我试图使用Homestead 2.0,现在我又遇到了连接超时问题, 这通常不是问题,因为之前切换到32位有帮助。 但现在我不能只添加一行     config.vm.box = “的ubuntu / trusty32” 因为我们没有经典的Homestead.yaml文件了 似乎插入了新的2.0 Homestead.yaml文件中的值 在后台真正的那个,我没有可用的Vagrantfile 可以手动编辑...... 希望有人能帮忙......

mqui

赞同来自:

初始引导期间的SSH连接超时可能与多种原因有关,例如:

  • 检查BIOS中是否启用了虚拟化(根据comment),
  • 系统等待用户互动(例如share partition is not ready),
  • 您的私钥不匹配(通过vagrant ssh-config检查配置),
  • 启动过程需要更长的时间(尝试增加config.vm.boot_timeout),
  • 它从错误的驱动器启动(例如从安装程序ISO启动),
  • VM防火墙配置错误(例如iptables configuration),
  • 本地防火墙规则,端口冲突或与VPN软件冲突,
  • sshd配置错误。
要调试此问题,请运行--debug选项或类似:
VAGRANT_LOG=debug vagrant up
如果没有什么明显的,那么尝试通过vagrant ssh或通过以下方式从另一个终端连接到它:
vagrant ssh-config > vagrant-ssh; ssh -F vagrant-ssh default
如果SSH仍然失败,请尝试使用a GUI(例如config.gui = true)运行它。 如果不是,请检查正在运行的进程(例如:vagrant ssh -c 'pstree -a')或验证您的sshd_config
如果它是一次性VM,您可以再次尝试destroyup。 您还应该考虑升级您的Vagrant和Virtualbox。
有关更多信息,请查看Debugging and Troubleshooting页面。

reum

赞同来自:

以下是它对我有用的方式:

After "vagrant up" started the virtual machine, turned off the machine and go to the new virtual machine settings in virtualbox. Then go to "Network" -> "Advanced" Adapter Type: I changed from "Intel PRO XXXXX" to "PCNet-Fast" (or any other adpter other than Intel PRO did work)

taut

赞同来自:

当我使用x64 box(chef / ubuntu-14.04)时,我遇到了同样的问题。 我改为x32并且它工作(hashicorp / precise32)。

qporro

赞同来自:

在AMD64位上安装ubuntu32位就可以了。我没有访问BIO,因为它受限制的环境,但我仍然能够使用ubuntu / trusty32而不是ubuntu / trusty64 在Windows 7 SP1上使用Vagrant 1.6.3和VirtualBox 4.3.15 希望有所帮助。

hhic

赞同来自:

我的解决方案结果与上述完全无关。我在Windows 7主机中运行Ubuntu 14作为访客。我一直在运行这个流浪盒,但我在几个月没有使用它后再次启动它,并且它一直在提供SSH连接超时。事实证明,密钥对不起作用 - 所以我根据this page上的说明将Vagrant public key复制到Ubuntu中。但那还不是全部。然后我发现我的基本框中的私钥与私钥here不同。将公钥放入Ubuntu后,将此私钥放入C:\ Users \ your-user.vagrant.d \ boxes \ vagrant-box-name \ nnnnnnnn \ virtualbox中的vagrant_private_key文件中修复了问题。

qquas

赞同来自:

我有一个问题与现有的盒子(不知道改变了什么),但我可以通过SSH连接,即使Vagrant盒无法启动。碰巧我的SSH密钥发生了某种变化。 从vagrant根文件夹我运行了vagrant ssh-config,它告诉我密钥文件的位置。我用puttygen打开了它,然后它给了我一把新钥匙。 在我的Linux客户机上,我编辑了~/.ssh/authorized_keys并删除了新的公钥。 一切都在恢复 - 现在!

yet

赞同来自:

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

set

赞同来自:

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

modit

赞同来自:

我的运行正常然后这个“警告:远程连接断开。重试...”反复 - 可能20次 - 直到它连接。基于上面的答案,我只是

vagrant destroy
vagrant up
这一切都很好。我非常简单,但我通过将Vagrantfile减少到config.vm.box = "ubuntu/trusty64"来实现这一点,它仍然在做。所以这就是为什么破坏和重新开始似乎是最好的选择。鉴于这些Vagrant图像的无状态特性,我不明白为什么在每种情况下都不起作用。我刚刚进入这个阶段,我可能还知道那不是真的。

phic

赞同来自:

对我来说,它是vagrant和virtual box之间的兼容性。 我在Windows 10上,我做了什么,我卸载了流浪汉和虚拟盒子 然后安装旧版本的虚拟机专用版本4.3.38(此版本也安装扩展包) 然后安装最新版的流浪汉(目前为1.8.5) 之后它起作用了。

nerror

赞同来自:

当我杀死腻子过程时我得到了解决。因为我有git-ssh和putty都在运行。他们似乎为ssh访问而互相争斗。只有一个就足够了。

zhic

赞同来自:

我遇到了同样的问题。我认为问题可能是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后查看VirtualBox中的图标(如上所示,在Vagrantfile中使用GUI),如下图所示 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图标停止为灰色。 我浪费了很多时间来解决这个问题(以及许多PC重启),所以我希望这对任何在Windows上有问题的人都有帮助 - 确保在控制面板中关闭了Hyper-V。

et_id

赞同来自:

就像这里已经指出的一些人一样,如果VirtualBox图像没有正确启动,则会出现错误 - 除其他外 - 。对我来说,在Vagrant上使用GUI模式没什么用,因为它只显示了一个黑色的窗口。在VirutalBox GUI中,我检查了我的VM上的设置,并发现操作系统设置不正确(Debian 32而不是64位)。 因此,我只建议手动检查VM的VirtualBox设置,并在不使用Vagrant的情况下启动VM。

yut

赞同来自:

我有同样的问题,但没有其他答案完全解决了我的问题。 @Kiee的回答很有帮助,虽然我在GUI中看到的只是一个黑屏(左上角有下划线,Virtual Box中的这个问题也在堆栈溢出中单独提出,再没什么用)。 最终,解决方案证明非常简单:检查虚拟机的版本。 更确切地说,我有一个64位Debian的其他人的盒子,但Virtual Box坚持将它视为32位,我没有注意到。要更改它,请打开Virtual Box,然后打开终端并运行

vagrant up
等待这条线
default: SSH auth method: private key
现在你可以点击ctrl + C(或等待超时)并运行
vagrant halt
您的虚拟机不会被破坏,因此您可以在Virtual Box的菜单中看到它,但将关闭电源,以便您可以更改设置。在菜单中选择您的机器,单击“设置” - >“常规”并选择正确的“版本”,对我来说它是'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

oenim

赞同来自:

我发现在使用VirtualBox的MacOS上将此添加到Vagrantfile会让你走得更远:

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

psunt

赞同来自:

如果您正在使用包装器层(如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映像

reos

赞同来自:

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
看看它是否有效。