Vagrant卡住连接超时重试
Posted
技术标签:
【中文标题】Vagrant卡住连接超时重试【英文标题】:Vagrant stuck connection timeout retrying 【发布时间】:2014-04-29 19:03:59 【问题描述】:我的流浪汉昨晚工作得很好。我刚刚打开电脑,点击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 尚未在网络上广泛报道,我找不到发生这种情况的原因。
【问题讨论】:
这种情况可能是因为 VirtualBox 未能重定向端口,尽管说 '==> default: Forwarding ports... default: 22 => 2222 (adapter 1) ' 您可以在我的问题link 中查看完整描述。我仍然不知道如何修复重定向失败(您可以查看 VirtualBox 日志。 我也有同样的问题。问题是访客机器上没有安装和启用 ssh 服务器。 我在安装 ubuntu 16.04 时遇到了同样的错误 - 通过将虚拟机升级到 5.1.x 解决了这个问题 - 请参阅 askubuntu.com/a/822974/151137 @Kiee 请检查杀毒和防火墙,暂时停止,然后你去:) 【参考方案1】:ubuntu/bionic64
遇到了类似问题通过启用 Vagrantfile 中的 gui,我可以使用默认的 vagrant/vagrant
登录config.vm.provider "virtualbox" do |vb|
vb.gui = true
end
然后使用以下命令重置防火墙
$ ufw force --reset
然后这次重新启动系统没有 UI 能够毫无问题地启动
确保在重置之前保留备份防火墙规则
【讨论】:
【参考方案2】:我只是分享这个,以便将来可以帮助另一个人。上面的 rubo77 给了我这个答案的灵感。
在我的 vagrant 文件中取消注释两行后,我遇到了这个卡在连接超时循环中的问题。
vb.gui="true"
config.vm.network "forwarded_port", guest: 80, host: 8080
显然,第一行显示了 GUI,询问您是要跳过安装还是让 vagrant 手动安装。评论它允许我登录,但我仍然可以看到“连接中止”。在终端中重试。
所以我 ssh 进入我的流浪者并输入。
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
然后 vagrant reload 并没有遇到任何连接错误。但是不要接受所有传入的流量。因此,如果您要长时间使用您的 bos,您可能希望添加规则以仅允许端口 8080。
Digital Ocean 提供了一个非常好的教程,介绍如何向 iptables 添加规则。
记得安装 iptables-persistent 来保存你的防火墙配置
【讨论】:
【参考方案3】:在我的例子中,给它一个静态 IP 地址,简单地解决了问题:
config.vm.network "private_network", ip: "192.168.50.50"
【讨论】:
【参考方案4】:我的运行良好,然后这个“警告:远程连接断开。重试...”一遍又一遍 - 可能 20 次 - 直到它连接。根据上面的答案,我只是
vagrant destroy
vagrant up
一切都很好。我的很简单,但我通过将 Vagrantfile 减少到 config.vm.box = "ubuntu/trusty64"
来做到这一点,它仍然在这样做。所以这就是为什么破坏和重新开始似乎是最好的选择。鉴于这些 Vagrant 图像的无状态性质,我不明白为什么这在每种情况下都不起作用。我刚刚进入这个,我可能还知道那不是真的。
【讨论】:
如果您可以配置您的虚拟机,这是一个很好的解决方案。在我的例子中,构建一个虚拟机更加复杂,并且需要更多的时间。 是的,我在我的虚拟机上设置了别名和其他东西,销毁它并不是一个很好的答案 很好,我用vragant halt
尝试了很多次,但效果很好!
对我来说效果很好,我同时面临 localhost 连接重置问题和这个问题,并且再次销毁和创建 vagrant 修复了这些问题。【参考方案5】:
我正在通过在/etc/fstab
中添加一个新条目来测试我的 vagrant VM 中的已安装文件夹。后来我注销了,跑了 vagrant halt,但是当我跑vagrant up
时,我得到了:
SSH auth method: private key
Warning: Remote connection disconnect. Retrying...
我阅读了所有这些帖子并尝试了所有似乎与我的案例相关的帖子(除了 vagrant destroy,它肯定会解决我的问题,但在我的案例中是最后的手段)。 @Kiee 的帖子给了我尝试直接从 VirtualBox GUI 启动我的虚拟机的想法。在启动过程中,VM 自行停止并询问我是否想跳过安装我之前添加到/etc/fstab
的测试文件夹。 (这就是 vagrant 无法启动 VM 的原因。)在回答“NO”后,VM 启动没有问题。我登录了,从我的 fstab 中删除了顽皮的行,然后关闭了 VM。
在那之后 vagrant 就可以正常启动了。
外卖?如果突然 vagrant 无法重新启动到您的 VM,请尝试直接从提供程序(在我的情况下为 VirtualBox)启动。很有可能你的启动器因与 SSH 完全无关的东西而挂起。
【讨论】:
【参考方案6】:这对我来说是这样的:
“vagrant up”启动虚拟机后,关闭机器并进入virtualbox中的新虚拟机设置。然后转到“网络”->“高级”
适配器类型:我从“Intel PRO XXXXX”更改为“PCNet-Fast”(或除 Intel PRO 之外的任何其他适配器都可以)
【讨论】:
【参考方案7】:我的解决方案结果并非完全符合上述要求。我在 Windows 7 主机中以访客身份运行 Ubuntu 14。我一直在很好地运行这个 vagrant box,但是在几个月没有使用它后我再次启动它,它不断出现 SSH 连接超时。事实证明,不知何故,密钥对不起作用——所以我根据this page 上的说明将Vagrant public key 复制到了Ubuntu 中。但这还不是全部。然后我发现我的基础框中的私钥与私钥 here 不同。在将公钥放入 Ubuntu 后,将此私钥作为 vagrant_private_key 文件放入 C:\Users\your-user.vagrant.d\boxes\vagrant-box-name\nnnnnnnn\virtualbox 可解决问题。
【讨论】:
【参考方案8】:我发现在 MacOS 上使用 VirtualBox 将其添加到 Vagrantfile 会让你走得更远:
config.vm.provider 'virtualbox' do |vb|
vb.customize ['modifyvm', :id, '--cableconnected1', 'on']
end
【讨论】:
在研究了这个问题几个小时后,这对我有用! 很高兴为您提供帮助 :)【参考方案9】:在 Bios 设置中检查您的 CPU 的虚拟化是否已启用。
【讨论】:
【参考方案10】:初始启动期间的 SSH 连接超时可能与多种原因有关,例如:
检查是否在 BIOS 中启用了虚拟化(根据comment), 系统等待用户交互(例如share partition is not ready), 你的私钥不匹配(通过vagrant ssh-config
检查配置),
引导过程需要更长的时间(尝试增加config.vm.boot_timeout
),
它从错误的驱动器启动(例如从安装程序 ISO),
VM 防火墙配置错误(例如iptables
configuration),
本地防火墙规则、端口冲突或与 *** 软件冲突,
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
。
如果是一次性虚拟机,您可以随时尝试destroy
和up
再次。
您还应该考虑升级 Vagrant 和 Virtualbox。
如需更多信息,请查看Debugging and Troubleshooting 页面。
【讨论】:
【参考方案11】:对我有用的是允许从 BIOS 在 64 位操作系统(Ubuntu 13.10)上进行 64 位虚拟化。
【讨论】:
你说的可能是 64 位虚拟化!【参考方案12】:我对此问题的解决方案是,我的旧笔记本电脑启动时间太长了。我打开虚拟盒子,连接到盒子并等待屏幕加载。花了大约 8 分钟。
然后它连接并安装了我的文件夹并继续前进。
有时请耐心等待!
【讨论】:
【参考方案13】:我找到的解决方案是检查连接到 NAT 的适配器 1 中的电缆连接选项。我真的不知道,这是我的第四个流浪盒子,但这是唯一一个没有选中电缆连接选项的盒子,并且在检查后,它可以工作。
【讨论】:
我正在使用 Homestead 1.0.1 和 VirtualBox 5.0.28,感谢这个答案,我解决了这个问题。 通过 GUI 我可以看到它正在等待网络接口,然后解决了问题。谢谢。s 这个固定我的+1 这解决了我的问题:Vagrant 1.9;虚拟机 5.1; Laravel/宅基地 5.3【参考方案14】:就像这里的一些人已经指出的那样,如果 VirtualBox 映像没有正确启动,就会出现错误。对我来说,在 Vagrant 上使用 GUI 模式并没有多大帮助,因为它只显示了一个黑色窗口。在 VirutalBox GUI 中,我检查了我的 VM 上的设置,发现操作系统设置不正确(Debian 32 而不是 64 位)。
所以我只能建议手动检查虚拟机的 VirtualBox 设置并让虚拟机启动而不首先使用 Vagrant。
【讨论】:
【参考方案15】:我在 VirtualBox 中运行 vagrant/VirtualBox 时得到了这个。我通过在主机中运行 vagrant 机器解决了这个问题。
【讨论】:
【参考方案16】:对我来说,这是 vagrant 和 virtual box 之间的兼容性。
我在 Windows 10 上,我做了什么我卸载了 vagrant 和 virtual box
然后安装一个旧版本的虚拟盒子,特别是4.3.38版(这个版本也要安装扩展包)
然后安装最新版本的 vagrant(目前是 1.8.5)
之后就成功了。
【讨论】:
这里有同样的问题。 Virtualbox 有可用的更新。更新它,“vagrant destroy”和“vagrant up”命令修复了它。【参考方案17】:如果您使用的是 Windows 8 或 10,这对我有用:
-
更改 BIOS 设置以允许 64 位虚拟化。
方法如下:
使用高级启动重新启动电脑(转到高级启动-'立即重新启动'-'疑难解答'-'高级选项'-'UEFI 固件设置'-'重新启动')
在 BIOS 窗口内 - 转到“高级”菜单/选项卡 - 启用“英特尔虚拟技术”
保存并退出。
【讨论】:
T440p 笔记本上也一样 这里也一样。在我的机器上,这意味着启用虚拟化 Vt-x 谢谢!我的 BIOS 设置中禁用了虚拟化。我以前在同一台机器上使用过 vagrant,但由于某种原因,BIOS 设置在我不知情的情况下被更改。所以先检查一下这个设置。【参考方案18】:我在杀死腻子进程时解决了这个问题。因为我有 git-ssh 和 putty 都在运行。他们似乎为了 ssh 访问而互相争斗。一个就够了。
【讨论】:
【参考方案19】:这里有很多很好的答案,我无法全部阅读,但是,我也只是过来贡献了我的一点点。我有两个不同的问题:
vagrant up
无法找到我的 ssh 'id_rsa'(因为当时我还没有):
我跑了ssh-keygen -t rsa -b 4096 -C "myemailaddress@mydomain.com"
,基于this GitHub's article,瞧,一步一步完成了;
然后,我遇到了同样的问题“Warning: Connection timed out. Retrying...”,永远...: 所以,在阅读了很多之后,我重新启动了我的系统并查看了我的 BIOS(在 PC 上按 F2 到达那里),并且有 Virtualization disabled。我已启用、保存并再次启动系统,以检查它是否发生了任何变化。
在那之后,vagrant up
就像一个魅力!现在是凌晨 4 点,但它正在运行!多么酷,哈? :D 据我所知,很少有像我这样的受虐狂开发者会在 Windows 上尝试这个,特别是在 Windows 10 上,我只是不能不忘记来到这里并留下我的话......另一个重要信息是,我正在尝试设置 Laravel 5,使用 Homestead、VirtualBox、作曲家等。它成功了。所以,希望这个答案对这个问题有所帮助,并且答案对我有所帮助。我最好的祝福。再见!
【讨论】:
【参考方案20】:如果您使用包装层(如 Kitchen CI)并且运行 32b 主机,则必须抢占安装 Vagrant 盒。它们的默认提供者是二进制的操作码“家族”。
所以在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 图像
【讨论】:
【参考方案21】:在您的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
看看它是否有效。
【讨论】:
【参考方案22】:删除文件:
C:\Users\UserName\\.vagrant.d\insecure_private_key
然后运行:
vagrant up
【讨论】:
我已经在互联网上搜索了三天,并尝试了我遇到的几乎所有解决方案。只有发现它可以像这样简单。我的英雄。谢谢! +1 对我没有任何影响。我有 mac,Vagrant 1.9.3【参考方案23】:从我的 Vagrantfile 中删除这一行后,我遇到了同样的问题:
config.vm.network "private_network", type: "dhcp"
我把这条线放回去后,VM 加载正常。
【讨论】:
我正在使用苏格兰威士忌,我所做的只是取消注释config.vm.network
的行,它解决了问题。【参考方案24】:
我遇到了同样的问题,但其他答案都没有完全解决我的问题。 @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
【讨论】:
我也遇到了同样的情况,为此我损失了一天,我的下拉菜单中也没有 64 位,所以我检查了fixedbyvonnie.com/2014/11/… 并解决了它【参考方案25】:我也遇到过同样的问题。我通过从BIOS
设置启用Virtualization
解决了这个问题。
【讨论】:
反直觉地,在我的 BIOS 中,我不得不禁用虚拟化并启用 VT-X。尝试在 BIOS 中切换这些设置。【参考方案26】:这个帖子中没有提到我必须解决这个问题的方法,所以我在这里发布详细信息,以防它帮助其他人。
造成这种情况的原因是 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
【讨论】:
【参考方案27】:我通过输入ˆC
(或Windows 上的ctrl+C
)两次并退出连接失败屏幕来解决。
然后,我可以通过 SSH (vagrant ssh
) 连接并自己查看错误。
在我的例子中,路径输入错误。
【讨论】:
【参考方案28】:为 VMware 提供商的用户提供的另一种可能的解决方案: 对我来说,在同一台主机上删除 VirtualBox 的并行安装后,这个问题得到了解决。 VMware 和 VirtualBox 之间的网络接口显然存在冲突
【讨论】:
【参考方案29】:也许这是一个太简单的答案,无法帮助很多人,但如果你还没有,则值得尝试:执行“vagrant halt”而不是“vagrant suspend”,然后使用“vagrant up”重新启动 VM。
我认为我的问题是由于某些“kworker”进程出现错误并且在 VM 中不断超时,因此硬重启似乎可以正确地重新加载进程,而保存和恢复只是恢复损坏的进程。状态。
【讨论】:
哇。最后。这对我有用。我正在使用窗口 7。@Ambulare 谢谢!【参考方案30】:就我个人而言,Tunnelblick *** 软件阻止了连接。现在,当我启动新虚拟机时,我会暂时禁用 Tunnelblick。
【讨论】:
以上是关于Vagrant卡住连接超时重试的主要内容,如果未能解决你的问题,请参考以下文章
使用 Serverless Aurora 时 Sequelize 连接超时,寻找增加超时持续时间或重试连接的方法
MySQL数据库连接重试功能和连接超时功能的DB连接Python实现