【发布时间】:2016-04-08 12:40:06
【问题描述】:
vagrant ssh 有一个奇怪的问题。类似的问题,如Vagrant asks for password after SSH key update、(vagrant & ssh) require password、或Vagrant ssh authentication failure,对我没有帮助。
所以,情节。
我有一台运行 Ubuntu 14.04.3 的虚拟机。所有设置都是根据这篇文章进行的:https://blog.engineyard.com/2014/building-a-vagrant-box。
注意:我可以使用带有 vagrant 的 insecure_private_key(转换为 *.ppk)的 Putty SSH 到此虚拟机,该密钥位于“C:/Users/Gino/.vagrant.d/insecure_private_key。密码未提示。
然后我打包这个虚拟机,用这个包初始化 vagrant 并运行vagrant up。我收到“Warning: Authentication failure. Retrying...”错误。但是我可以vagrant ssh 到这台机器,但它要求我输入密码。如果我尝试使用 Putty 和必要的密钥(如第一段)向它 ssh ,它也会要求我输入密码。
我vagrant halted 这台机器,在 VirtualBox VM 的列表中找到它并手动运行它。之后,我尝试使用具有相同密钥的 Putty ssh 到这台机器并成功 - 我可以在没有任何密码的情况下登录。
vagrant ssh-config 的结果,如果需要:
h:\VagrantBoxes\main-server32>vagrant ssh-config
Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile "C:/Users/Gino/.vagrant.d/insecure_private_key"
IdentitiesOnly yes
LogLevel FATAL
我的Vagrantfile(它是自动生成的,几乎没有,只添加了来自 cmets 的建议行):
Vagrant.configure(2) do |config|
config.vm.box = "vagrant-main-server32"
config.ssh.insert_key = false
end
那么这里的奥秘是什么?为什么 ssh 使用密钥在没有 vagrant up 的情况下工作并且失败并提示输入密码?
注意。另一个有趣的事情:它仍然无法在期间进行身份验证
vagrant up。但是如果在错误“身份验证失败”的时候 出现我通过virtualbox登录vm,也登录成功 带有vagrant up的窗口。然后vagrant ssh工作。
【问题讨论】:
-
您使用的是哪个版本的 vagrant ?你能在你的 Vagrantfile 中设置
config.ssh.insert_key = false吗 -
@FrédéricHenri,它的 1.8.1。我会尽快尝试。
-
@FrédéricHenri,不,选项没有任何变化。
-
啊!曾经有过这样的错误..所以让我们尝试 1. 删除 .vagrant/machines/default/virtualbox/ 下 vagrant 生成的 private_key 文件(不是 .vagrant.d 而是本地 .vagrant) 2. 将密钥文件重新下载到虚拟机所以 ssh 进入虚拟机并执行 `curl raw.githubusercontent.com/mitchellh/vagrant/master/keys/… > ~/.ssh/authorized_keys 3. 保持 config.ssh.insert_key = false 和 vagrant 再次启动,ssh 有望工作
-
其实我在
.vagrant/machines/default/virtualbox/没有私钥。那里有四个文件:id、index_uuid、action_set_name、creator_uid。我应该尝试重新下载密钥而不删除任何内容吗?