使用同步文件夹时,vagrant ssh 失败

3
我想将与我的vagrant文件相关的本地目录安装到虚拟机中。但是,当我这样做时,

vagrant ssh

不再起作用 - 私钥失败。我不确定为什么ssh突然失败了。 需要帮助吗?(如果有影响的话:我正在尝试安装Java构件编译的目录)。

# -*- mode: ruby -*-
# vi: set ft=ruby :


Vagrant.configure("2") do |config|
  # Use Ubuntu 14.04 Trusty Tahr 64-bit as our operating system
  config.vm.box = "ubuntu/trusty64"

  # Configurate the virtual machine to use 2GB of RAM
  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "1024"]
    vb.cpus = 1
  end

  config.vm.network :forwarded_port, guest: 8080, host: 8080
  config.vm.synced_folder "target/", "/home/vagrant"

end

你能再解释一下吗?在你的 Vagrantfile 中,你添加了哪个 sync_folder 而导致失败,并出现了什么错误信息(可以尝试打开 --debug 模式,将错误之前的必要信息粘贴出来)。 - Frederic Henri
啊,我粘贴了错误的代码片段。让我编辑一下。 - Christian Bongiorno
但是您的目标主机目录中是否有一个 .ssh/ 目录和 ssh 密钥?我不建议直接挂载到 /home 目录。 - Frederic Henri
我在本地主机上的家目录中有一个.ssh目录。如果我不尝试同步,vagrant会捕捉到它。我需要能够登录并使用主机文件。 - Christian Bongiorno
在您的主机上,您有自己的 .ssh 目录,这很好,但是在 VM 中,您的主目录(即 /home/vagrant)需要包含 .ssh 目录以包含授权密钥。问题是 Vagrant 会在 vagrant ssh 时创建此目录,但在此之后立即删除所有内容,因为您同步到 /home/vagrant 上,它被删除并且无法进行身份验证。因此,要么将其包含在主机目标/目录中,以便在同步时存在,要么最好不要同步 /home/vagrant 目录。 - Frederic Henri
@FrédéricHenri 您的答案是正确的。将其更改为实际答案,我将给您信用。 - Christian Bongiorno
1个回答

2
当您尝试在VM上直接同步/home/vagrant时,您需要确保您的target目录包含一个.ssh文件夹和authorized_keys。当您使用vagrant up命令启动VM时,vagrant会进行ssh并为您创建此目录,但是在通过sync_folder部分进行操作时,它将用主机target/替换/home/vagrant的所有内容,因此丢失之前创建的内容。
如果您真的非常想在/home/vagrant上进行同步,可以先不进行同步,将已创建的所有文件(.ssh/,.bash等)复制到目标目录中,然后您应该能够在/home/vagrant上重新运行同步。(注意:我没有尝试过这样做,并且实际上不建议直接在/home/vagrant上进行同步,因为如果您从provisioning或其他方式安装其他软件,可能会在以后遇到问题)。

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