更改Vagrantfile会导致“vagrant ssh”提示输入密码?

20

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

当我在Vagrantfile中更改挂载共享文件夹的路径并执行vagrant reload后,我无法再使用vagrant ssh命令而不需要输入密码。

这是我的原始挂载共享配置,它可以正常工作:

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

这就是我试图更改的内容,但在vagrant reload后它无法正常工作(要求我输入密码):

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

文件中其他内容都保持不变。你知道这是怎么回事吗?


1
Vagrant文件夹会自动与客户机共享,因此您无需编写任何内容来共享它。如果ssh命令需要密码,您可以尝试使用“vagrant”,几乎所有的box都使用这个词作为ssh的默认密码。 - Makio
谢谢回复。我之前尝试过vagrant密码,但没有成功。我注释掉了同步文件夹的那一行,然后执行了vagrant destroy和vagrant up。现在我可以轻松地使用vagrant ssh,但是我现在在/home/vagrant中看不到任何文件,很奇怪。 - Tommy
不是在/home/vagrant文件夹中,而是在默认的同步文件夹/vagrant中,请尝试一下。 - Makio
哦,你说得对。我现在在/vagrant中看到了文件。看了文档,确实说默认共享是/vagrant,应该仔细阅读。感谢你的帮助! - Tommy
只是想在这里补充一下。我发现其中一个失败和提示输入密码的问题是你将vagrant行放在sudoers中的位置。请确保它在“wheel”之后。 - cuky
1个回答

34
请注意这里实际发生了什么。当您共享/home/vagrant文件夹时,VM提供程序(很可能是VirtualBox)控制该文件夹,并且VirtualBox混乱了所有权限。您将无法为.ssh文件夹设置0700权限,也无法为.ssh文件夹内的authorized_keys文件设置0600权限。因此,vagrant ssh命令将明确要求您输入密码,因为它无法检查.ssh文件夹中的公钥。
Makio对于/vagrant是默认的共享文件夹是正确的。您可以共享几乎任何想要的文件夹,但不能共享/home/vagrant文件夹。我知道这点是因为我遇到了与您相同的问题。通过允许Vagrant控制/home/vagrant文件夹,权限被适当设置,使得vagrant ssh能够正常工作。
很高兴问题得到解决,希望我能更清楚地阐明这个问题给人们带来的具体原因。
c0p

啊,这很有道理。谢谢你的回答。也许如果我通过挂载选项在 /home/vagrant 上设置了适当的权限,它就可以工作了?即所有者为 vagrant,并且具有适当的 fmode 和 dmode 权限?http://serverfault.com/questions/398414/vagrant-set-default-share-permissions 我认为最好还是不要动 /home/vagrant。 - Tommy
那对你来说是行不通的。在了解VirtualBox如何处理共享文件夹权限之前,我自己也尝试过。相信我,我已经尝试过了。我很高兴看到这个问题被解释清楚了。在我理解我实际在做什么之前,我曾经困惑了一段时间。想给我“答案”分数吗?太棒了!c0p - cOp
是的,我知道你的意思。我添加了我为其他人做的事情,以便他们了解为什么不要共享那个 /home/vagrant 文件夹。在我弄清楚之前,我曾经陷入困境。但现在,每个人都会知道了。 - cOp
太棒了,感谢您的解答和解释。 - Rcynic

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