Vagrant ssh 提示输入密码

问题描述 投票:0回答:5

我有一个奇怪的问题

vagrant ssh
。类似的问题,例如 Vagrant 在 SSH 密钥更新后要求输入密码,或 (vagrant & ssh) 需要密码,或 Vagrant ssh 身份验证失败 都对我没有帮助。

那么,剧情。

我有一个运行 Ubuntu 14.04.3 的虚拟机。所有设置都是根据这篇文章进行的:https://blog.engineyard.com/2014/building-a-vagrant-box.

注意:我可以使用 Putty 和 vagrant 的 insecure_private_key(转换为 *.ppk)通过 ssh 连接到该虚拟机,该密钥位于“C:/Users/Gino/.vagrant.d/insecure_private_key。密码不会提示。

然后我打包了这个虚拟机,用这个包初始化vagrant并运行

vagrant up
。我收到“
Warning: Authentication failure. Retrying...
”错误。但尽管如此,我仍然可以
vagrant ssh
访问这台机器,但它要求我输入密码。如果我尝试使用 Putty 和必要的密钥(如第一段中所示)对其进行
ssh
操作,它也会要求我输入密码。

vagrant halt
编辑了这台机器,在 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
(它是自动生成的,几乎什么都没有,只添加了评论中的建议行):

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 vagrant-windows
5个回答
4
投票

我在 vagrant 1.8.1 上遇到了同样的问题,在我使用的几个盒子上(即:geerlingguy/centos6)

我在这些盒子上使用 Vagrant 1.7 没有任何问题。

在对为什么我无法在该盒子中进行 ssh 进行一些研究后,该盒子上的 /home/vagrant 似乎具有 755 权限,并且 ssh 阻止对具有这些权限的用户进行身份验证

/var/log/secure 摘录:

1 月 28 日 15:11:36 服务器 sshd[11721]:身份验证被拒绝:目录 /home/vagrant 的所有权或模式错误

要修复该虚拟机,我只需更改 /home/vagrant 权限(对其执行 chmod 700),现在我可以直接 ssh 进入我的盒子

我不知道如何直接修复它我认为你应该直接修改你的盒子

希望这有帮助!

编辑:我以为这是主机的共享文件夹,但共享的是 /vagrant 而不是 /home/vagrant


0
投票

我在

~/.ssh/config
的顶部有这个旧设置。

PubkeyAcceptedKeyTypes ssh-dss,ssh-rsa

删除后,

vagrant ssh
不再询问密码。


0
投票

如果您将 Vagrantfile 保存在外部硬盘上并使用 exfat 因为您像我一样跨平台工作,您也会遇到此错误。由于exfat不保存权限,ssh会一直认为私钥权限是777=>才能打开。

我将此脚本放在一起作为在 powershell 和 bash 上运行的解决方法(与 Linux、Mac 和 Windows 兼容):

# ssh-agent # uncomment if your ssh-agent isn't running as a service
cat V:\vm\arch_template\.vagrant\machines\default\virtualbox\private_key | ssh-add -
ssh -p 2222 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no vagrant@localhost

它需要一个有效的 ssh 代理配置。还要注意正确的端口!如果 2222 在

vagrant up
期间不可用,Vagrant 会将其更改为其他端口。


0
投票

我也有同样的问题,流浪者请求密码。 为了解决这个问题,我必须

  • 重新生成 ssh 密钥(可能没有必要,但我还是这么做了)。只需运行
    ssh-keygen
    并在出现提示时将密钥保存到
    .vagrant/machines/default/libvirt/private_key.pub
    (在您的 Vagrantfile 目录中)
  • 将 ssh 密钥复制到虚拟机。使用
    vagrant ssh-config
    获取虚拟机 IP / 端口并运行
    ssh-copy-id -i .vagrant/machines/default/libvirt/private_key -p PORT vagrant@IP
    (替换您的端口和 IP)。出现提示时,请勿输入密码

之后您应该能够登录而不会提示输入密码


-1
投票

我遇到了同样的问题,得到

[email protected]'s password
:启动vagrant时,输入
supposed password [vagrant]
后,我可以连接到虚拟机。但是,在阅读其他解决方案后,我在启动的 vagrantfile 所在的同一目录上尝试了
ssh-agent
,并且
vagrant-ssh
,并且我能够连接到正在运行的实例。

© www.soinside.com 2019 - 2024. All rights reserved.