Vagrant警告:连接被拒绝。正在重试。

13

测试默认示例

$ vagrant init hashicorp/precise32
$ vagrant up

我的配置:

尝试了所有方法后仍无法解决这个普遍错误:Getting error

虚拟机显示:

enter image description here

我可以成功登录:

enter image description here

防火墙和杀毒软件已关闭。

未安装Hyper-V
enter image description here

我尝试通过putty连接到 127.0.0.1 2222: enter image description here

编辑: enter image description here

enter image description here

Vagrantfile(已删除注释行)

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

vagrant ssh命令实际上并没有做什么。而vagrant reload则卡在了同一个问题上。

enter image description here

这很奇怪,因为它应该可以直接使用,但是请尝试在虚拟机中运行 sudo netstat -ptaun 命令,并查看是否有一个监听端口22的sshd守护程序。您也可以尝试使用密码“vagrant”登录 vagrant sshvagrant ssh -p -- -l vagrant。编辑:连接被拒绝,所以您现在可以忽略我的评论的第二部分。 - Paulo Almeida
你能展示一下你的Vagrantfile吗?你有做过什么修改吗?为什么它要尝试在本地主机上进行ssh连接?你可以运行vagrant ssh-config并将结果放出来吗? - Frederic Henri
我已经编辑了我的问题来回答你的问题。 - Ben
@Ben,我已经编辑了我的答案,针对连接被拒绝的错误。起初我以为是连接超时。 - Frederic Henri
@WebComer - 很遗憾,您的链接现在已经失效。 - Jesse Chisholm
显示剩余3条评论
4个回答

4

使用Vagrant时,有时在第一次启动时会出现这种情况。之后它会超时并将您带回提示符,输入vagrant ssh,即可进入。如果无法进入,请尝试执行vagrant reload,它将重新启动虚拟机。这是因为vagrant映像关闭了dns,所以需要一段时间来解析连接。同样,在下载和启动后的第一次上线时,有时会出现此问题。


1
vagrant ssh 没有任何反应。 vagrant reload 和 vagrant up 一样存在同样的问题。 请查看我的问题编辑。 - Ben
vagrant reload 对我很有帮助。似乎问题在于第一次 vagrant up 时,虚拟机增强工具版本过旧。通过运行 vagrant reload 命令成功更新了虚拟机增强工具,并使其正常运行。 - PHZ.fi-Pharazon

1
我猜这可能是虚拟机中 VBox 客户机配置不正确。
我想您可以尝试确保在虚拟机的设置中启用了NAT和端口转发,如果没有启用,则可以手动启用:在VirtualBox图形管理器中选择该虚拟机,点击设置,点击弹出窗口右侧的网络,检查所有适配器,并确保已启用“附加到NAT”的适配器。此外,请检查端口转发设置。当您运行虚拟机时,还可以通过底部/左侧的按钮(从左到右第二个图片的第三个按钮)访问网络设置。

0

在多次破坏/重新启动之后,我发现对我来说情况如下:检查是否有一个正在运行的SSH代理加载了密钥(比如PuTTY的Pageant)。

在我的情况下,与Vagrant配置的密钥不同,Pageant中加载了另一个SSH密钥,这会导致认证过程发生冲突,最终导致无休止的"Connection refused. Retrying"错误,并使我无法使用Vagrant。

解决方法要么是:

  • 在Pageant中加载适当的密钥
  • 关闭Pageant(通常是我做的,因为这样更快)

希望这可以帮助到有需要的人!


0

这里有几件事情我会尝试(我明白你可能已经尝试了很多,而且这些方法可能无法解决你的问题,但还是提供给你参考):

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

  • 不确定您登录到虚拟机时是否启用了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上评论

编辑

再仔细查看后,我认为问题是关于连接超时,但消息显示是连接被拒绝

SSH username: vagrant
SSH auth method: password

但是你在展示的Vagrantfile中没有传递任何密码。只需添加即可

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

我建议使用ssh密钥,因为它更简单易用。


如果连接被拒绝,那不是密码问题 - 这意味着主机在SSH发挥作用之前,在TCP级别上拒绝连接到该端口。 - Christian Ternus
@ChristianTernus 没错,但很奇怪 OP 的 Vagrantfile 没有密码,而且有一个截图显示认证方式,第二个截图则是私钥。这让我感到困惑。 - Frederic Henri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接