【问题标题】:Changing Vagrantfile causes "vagrant ssh" to prompt for a password?更改 Vagrantfile 会导致“vagrant ssh”提示输入密码?
【发布时间】:2023-06-28 15:51:01
【问题描述】:

我一直在尝试使用 Vagrant 设置环境,但我遇到了 vagrant ssh 命令的问题。

当我在 Vagrantfile 中更改挂载共享文件夹的路径并执行 vagrant reload 时,如果不要求我输入密码,我将无法再 vagrant ssh

这是我对挂载共享的原始配置,它有效:

config.vm.synced_folder "./", "/home/vagrant/shared"

这是我试图更改的内容,但在vagrant reload(要求我输入密码)之后它不起作用:

config.vm.synced_folder "./", "/home/vagrant"

文件中的其他内容保持不变。知道这里发生了什么吗?

【问题讨论】:

  • vagrant 文件夹会自动与guest mc 共享,因此您无需编写任何内容即可共享。如果 ssh 命令需要密码,你可以尝试使用 'vagrant',几乎框使用这个词作为 ssh 的默认密码
  • 感谢您的回复。我之前尝试过 vagrant 密码,但没有用。我注释掉了同步的文件夹行并做了 vagrant destroy 然后 vagrant up。我可以 vagrant ssh 没问题,但我现在在 /home/vagrant 中没有看到任何文件,很奇怪。
  • 不是/home/vagrant,默认同步文件夹是/vagrant,不在home文件夹下,请尝试
  • 哦,你是对的。我现在看到 /vagrant 中的文件。查看文档,他们确实说默认共享是 /vagrant,应该更仔细地阅读。感谢您的帮助!
  • 只想在此添加以下内容。我发现的失败和密码提示之一是您将 vagrant 行放在 sudoers 中的位置。确保它在“*”之后

标签: ssh vagrant vagrantfile


【解决方案1】:

注意这里实际发生的事情。当您共享 /home/vagrant 文件夹时,VM Provider(很可能是 VirtualBox)拥有该文件夹的控制权,并且权限全部被 VirtualBox 破坏。您将无法为 .ssh 文件夹设置 0700 权限,也无法为 中的 authorized_keys 文件设置 0600 权限。 ssh 文件夹。因此,vagrant ssh 命令将明确要求您输入密码,因为它无法检查 .ssh 文件夹中的公钥。

Makio 认为 /vagrant 是默认共享文件夹是正确的。除了 /home/vagrant 文件夹之外,您几乎可以共享任何您想要的文件夹。我个人对此有所了解,因为我遇到了与您相同的问题。通过允许 Vagrant 控制 /home/vagrant 文件夹,为 vagrant ssh 正确设置权限。

很高兴它得到了解决,我希望我能更清楚地说明为什么这会给人们带来问题。

c0p

【讨论】:

  • 嗯,有道理。谢谢回答。也许如果我通过挂载选项在 /home/vagrant 上设置了适当的权限,它会起作用吗?即所有者 vagrant 和 fmode 和 dmode 的适当权限? serverfault.com/questions/398414/… 我认为最终还是离开 /home/vagrant 最好。
  • 那对你没用。在找出 VirtualBox 对共享文件夹权限的作用之前,我自己尝试过。相信我。我已经试过了。我很高兴看到这向您解释了为什么这是一个问题。在我明白我实际上在做什么之前,我被难住了一段时间。想用“答案”点打我吗?惊人的! c0p
  • 是的,我知道你的意思。我添加了我为其他人所做的事情,以了解为什么 共享该 /home/vagrant 文件夹。在我弄清楚之前,我被难住了一段时间。但现在,每个人都会知道。
  • 很棒的答案,谢谢你写这篇文章并解释它。