Vagrant卡住连接超时重试

Kie*_*iee 415 ssh virtualbox vagrant

昨晚我的流浪汉工作得非常好.我刚打开电脑,点击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...
Run Code Online (Sandbox Code Playgroud)

以前有人这么做过吗?流浪者在网上还没有被广泛覆盖,我找不到发生这种情况的原因.

Kie*_*iee 376

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

我做的是:我启用了虚拟框的GUI,看到它在启动时等待输入,以选择是否要直接启动到ubuntu或safemode等.

要打开GUI,你必须把它放在你的流浪汉配置中Vagrantfile:

config.vm.provider :virtualbox do |vb|
  vb.gui = true
end
Run Code Online (Sandbox Code Playgroud)

  • @Huuuze问题是虚拟机可能没有正常关机,当我第二天尝试SSH进入它时,机器希望我选择我想要启动的模式,但是通过命令行我不知道直到我打开了让我选择模式的gui. (17认同)
  • 谢谢.在我的例子中,VM被卡在引导程序(grub)中,等待ENTER键.我使用默认的`hashicorp/precise32`.我用GUI启动了机器,然后运行`sudo grub-mkconfig`来重置`/ boot/grub/grub.cfg`文件,然后我可以回复`vb.gui = true`行. (7认同)
  • GUI向我显示以下错误:您的系统上没有VT-x/AMD-V硬件加速.您的64位任务将无法检测到64位CPU,并且无法启动 (7认同)
  • @jasa如果它是一个流浪汉vm,那么用户名和密码很可能都是'vagrant` (4认同)
  • @TangibleDream你的Vagrant文​​件,在你(或应该)运行`vagrant up`的目录中 (2认同)

小智 213

当您按照上述方式使用流浪汉机器时,无需以gui模式启动(如果没有X服务器,则无法启动).

在VM启动时,在单独的终端窗口中,只需查找正在运行的计算机的ID.

vboxmanage list runningvms
Run Code Online (Sandbox Code Playgroud)

这将导致类似这样的事情:

"projects_1234567890" {5cxxxx-cxxx-4xxx-8xxx-5xxxxxxxxxx}
Run Code Online (Sandbox Code Playgroud)

通常,VM只是在等待您在引导加载程序中选择一个选项.您可以将适当的密钥代码(在这种情况下Enter)发送到vm controlvm:

vboxmanage controlvm projects_1234567890 keyboardputscancode 1c
Run Code Online (Sandbox Code Playgroud)

而已.您的虚拟机将继续启动过程.

  • @ParrisVarney:大多数时候,这个挂起是由引导加载程序等待选择一个条目引起的.这是通过向它发送回车键来完成的,您可以使用GUI或使用VirtualBox的命令行界面的"vboxmanage".因此,您正在"控制"VM并使用参数`keyboardputscancode`向Enter键(1C)发送"扫描代码". (22认同)
  • Windows上的vboxmanage可以在`C:\ Progra~1\Oracle\VirtualBox\VBoxManage.exe`中找到,说下面的BIOS更改帮我解决了这个问题 (4认同)

Jap*_*ngo 47

要仔细检查是否在您的机器的BIOS中启用了硬件虚拟化.

我的问题是同一串超时,但我只能在GUI中看到黑屏.

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

这是我找到的帖子的内容:

我看到仍然有一些用户遇到了这个问题.因此,我将尝试总结下面列出SSH超时问题的一些可能解决方案:

  • 确保您的防火墙或防病毒软件没有阻止该程序(我怀疑它会经常发生)
  • 给你的流浪汉机器一些时间来实现超时.如果您没有非常快的PC/Mac,VM将需要一段时间才能启动到SSH就绪状态,因此会发生超时.
  • 因此,在得出结论认为存在故障之前,首先尝试让vagrant超时完全超时.
  • 如果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核心isomething处理器.

希望有所帮助.

  • 其次是“检查以确保启用硬件虚拟化”。我遇到了这个确切的问题,重新启动主机然后在 BIOS 中启用虚拟化解决了我的问题。 (2认同)
  • 刚受此打击.Hyper-V是原因,卸载它修复它.tyvm (2认同)

Ced*_*ric 42

我发现的解决方案是检查连接到NAT的适配器1中的电缆连接选项.我真的不知道,这是我的第四个流浪盒,但这是唯一一个未检查电缆连接选项,并在检查后,它的工作原理. NAT电缆连接


Mar*_*łek 34

我遇到了同样的问题.我认为问题可能是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
Run Code Online (Sandbox Code Playgroud)

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

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

在此输入图像描述

虽然我在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.


Han*_*kCa 31

我的运行正常,然后这个"警告:远程连接断开.重试......"一遍又一遍 - 可能20次 - 直到连接完毕.基于上面的答案,我只是

vagrant destroy
vagrant up
Run Code Online (Sandbox Code Playgroud)

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

  • 是的,我在我的虚拟机上设置别名和其他东西,摧毁它并不是一个很好的答案 (5认同)

kri*_*kri 19

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

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

警告:启用Hyper-V将导致VirtualBox,VMware和任何其他虚拟化技术无法运行.请参阅此博客文章https://www.hanselman.com/blog/SwitchEasilyBetweenVirtualBoxAndHyperVWithABCDEditBootEntryInWindows81.aspx,以便在没有启用Hyper-V的情况下创建启动Windows的启动条目的简单方法,如果有时您需要其他虚拟机管理程序.

  • 这对我有用.我只是在程序和功能中禁用了Hyper-V. (5认同)

Ges*_*han 17

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

  1. 更改BIOS设置以允许64位虚拟化.
  2. 方法如下:
    • 使用高级启动重启PC(转到高级启动 - 现在'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    • 在BIOS窗口中 - 转到"高级"菜单/选项卡 - 启用"英特尔虚拟技术"
    • 保存并退出.

  • 在T440p笔记本上也一样 (2认同)

小智 8

我有一个问题与现有的盒子(不知道改变了什么),但我可以通过SSH连接,即使Vagrant盒无法启动.碰巧我的SSH密钥以某种方式发生了变化.

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

在我的Linux客户机上,我编辑~/.ssh/authorized_keys并删除了新的公钥.

一切都在恢复 - 现在!


Dmi*_*lov 8

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

config.vm.network "private_network", type: "dhcp"
Run Code Online (Sandbox Code Playgroud)

在我把这条线放回去之后,VM装好了.


wma*_*dox 5

我通过在/etc/fstab. 后来我注销了,跑了流浪汉,但是当我跑的时候,vagrant up我得到了:

SSH auth method: private key
Warning: Remote connection disconnect. Retrying...
Run Code Online (Sandbox Code Playgroud)

我阅读了所有这些帖子并尝试了所有与我的案例相关的帖子(除了 vagrant destroy,这肯定可以解决我的问题,但在我的案例中是最后的手段)。@Kiee 的帖子给了我尝试直接从 VirtualBox GUI 启动我的 VM 的想法。在启动过程中,VM 自行停止并询问我是否要跳过安装我之前添加到/etc/fstab. (这就是 vagrant 无法启动 VM 的原因。)回答“否”后,VM 启动没有问题。我登录了,从我的 fstab 中删除了 naughty 行,然后关闭了 VM。

在那个流浪者能够启动之后就好了。

带走?如果突然间 vagrant 无法重新启动到您的 VM,请尝试直接从提供程序(在我的情况下为 VirtualBox)启动。很可能你的启动因为与 SSH 完全无关的东西而挂起。


ken*_*orb 5

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

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

要调试问题,请运行一个--debug选项或类似:

VAGRANT_LOG=debug vagrant up
Run Code Online (Sandbox Code Playgroud)

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

vagrant ssh-config > vagrant-ssh; ssh -F vagrant-ssh default
Run Code Online (Sandbox Code Playgroud)

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

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


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

您还应该考虑升级您的Vagrant和Virtualbox.


有关更多信息,请查看" 调试和故障排除"页面.