【问题标题】:Vagrant Warning: Connection refused. Retrying流浪警告:连接被拒绝。重试
【发布时间】:2015-11-29 03:32:58
【问题描述】:

测试默认示例

$ vagrant init hashicorp/precise32
$ vagrant up

我的盒子:

我知道这是常见错误,但在尝试了所有方法后,我仍然无法使其正常工作

虽然 VM 显示:

我可以成功登录:

防火墙/防病毒已关闭。

Hyper-V 未安装

我尝试通过 putty 连接到 127.0.0.1 2222

编辑:

Vagrantfile(我已经删除了注释掉的行)

Vagrant.configure(2) do |config|
    config.vm.box = "hashicorp/precise32"
end

这就是 vagrant ssh 所做的……什么都没有。并且 vagrant reload 卡在同一个问题上。

【问题讨论】:

  • 这很奇怪,因为它应该可以开箱即用,但是尝试在虚拟机中运行sudo netstat -ptaun,看看它是否有一个 sshd 守护程序在端口 22 上侦听。您也可以尝试登录使用vagrant sshvagrant ssh -p -- -l vagrant,使用密码“vagrant”。编辑:连接被拒绝,所以你可以忽略我评论的第二部分,至少现在是这样。
  • 你能展示你的 Vagrantfile 吗?你有没有改变什么,为什么它试图在你的本地主机上 ssh。你能运行vagrant ssh-config 并输入结果吗
  • 我已经编辑了我的问题来回答你的问题。
  • @Ben 我已经编辑了连接被拒绝错误的答案,首先我以为是连接超时
  • @Ben 你能解决这个问题吗?如果有,怎么做?

标签: vagrant virtualbox vagrant-windows


【解决方案1】:

Vagrant 在第一次启动时不时会发生这种情况。完成后,它将超时并返回提示符处,转到vagrant ssh,它会让你进入。如果它没有转到vagrant reload,它将重新启动虚拟机。发生这种情况是因为 vagrant 图像已关闭 dns,因此需要一段时间才能解决连接问题。同样,这有时会在您下载并启动后第一次启动时发生。

【讨论】:

  • vagrant ssh 什么都不做。 vagrant reload 和 vagrant up 有同样的问题。请看我的问题编辑
【解决方案2】:

我怀疑这可能是一个错误配置的 VBox 来宾。

我想您可以尝试确保在 VM 的设置中启用 NAT 和端口转发,如果没有,您可以手动启用它:在 VirtualBox 图形管理器中,选择机器,单击设置,单击弹出窗口右侧的网络,检查所有适配器并确保启用了“附加到 NAT”的适配器。另外,检查端口转发设置。您还可以在运行 VM 时从底部/左侧的按钮访问网络设置(第二张图片中的第三个按钮,从左到右)。

【讨论】:

    【解决方案3】:

    这里有一些我会尝试的事情(我知道您可能已经尝试了很多,但它可能无法解决您的问题,但以防万一):

    • 按照https://www.hanselman.com/blog/SwitchEasilyBetweenVirtualBoxAndHyperVWithABCDEditBootEntryInWindows81.aspx 中的步骤完全禁用 Hyper-V(从 Windows 功能中不确定它是否足够 - 即使您使用的是 32 位机器)

    • 不确定您是在从虚拟机登录 vm 时启用了 gui 模式,还是之后才打开它,但启用该选项并检查启动期间是否没有任何阻塞

      config.vm.provider :virtualbox do |vb|
        vb.gui = true
      end
      
    • 使用另一个 ssh 端口(即使它没有提到有冲突)你可以尝试另一个端口

      config.vm.network :forwarded_port, guest: 22, host: 2522, auto_correct: false, id: "ssh"
      

    vagrant up之后是否可以连接putty。

    • 可选,您可以运行 vagrant up --debug 以获取有关错误的更多信息,您将看到它在哪里循环/错误,并将输出结果提供给 SO 上的其他人发表评论

    编辑

    再看一遍,我以为问题是关于connection timeout,但消息说是connection refused

    SSH username: vagrant
    SSH auth method: password
    

    但是您没有在显示的 Vagrantfile 中传递任何密码。只需添加

    Vagrant.configure(2) do |config|
        config.vm.box = "hashicorp/precise32"
        config.ssh.username = "vagrant"
        confg.ssh.password = "vagrant"
    end
    

    我建议使用 ssh-key,因为它使用起来更简单。

    【讨论】:

    • 如果连接被拒绝,这不是密码问题 - 这表明主机在 ssh 甚至可以发挥作用之前在 TCP 级别拒绝与该端口的连接。
    • @ChristianTernus 你是对的,但奇怪的是来自 OP 的 Vagrantfile 没有密码并且有点默认,并且有一个显示身份验证方法的屏幕截图和第二个带有私钥的屏幕截图,我一直很困惑
    【解决方案4】:

    在多次销毁/reebots 之后我发现的情况是:检查您是否运行 SSH 代理并加载了密钥(例如 PuTTY 的 Pageant )。

    在我的情况下,使用 Pageant 加载另一个 SSH 密钥(而不是为 Vagrant 配置的密钥)与身份验证过程发生冲突,导致无休止的“连接被拒绝。重试”并最终出现在我身上无法使用 Vagrant。

    解决办法是

    • 在 Pageant 中加载适当的键
    • 闭幕式(我通常会这样做,因为在我的情况下它更快)

    希望这对那里的人有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-08
      • 2015-03-10
      • 1970-01-01
      • 2020-04-29
      • 2016-02-04
      • 2023-03-21
      • 2015-08-12
      • 2017-08-08
      相关资源
      最近更新 更多