如何修复Vagrant错误:`private_key_path`文件必须存在:

时间:2015-04-16 11:16:12

标签: ssh vagrant vagrantfile puphpet vagrant-windows

我一直在使用PuPHPet来创建虚拟开发环境。

昨天我为新盒子生成了一个配置文件。当我尝试使用vagrant up命令将其旋转时,我收到以下错误消息:

  

C:\ xx>流浪汉

     

使用'virtualbox'启动计算机'默认'   provider ...此机器的配置存在错误。   请修正以下错误,然后重试:

     

SSH:   * private_key_path文件必须存在:P://.vagrant.d/insecure_private_key

我遇到了这个question并将insecure_private_key从puphpet \ files \ dot \ ssh移动到与Vagrantfile所在的目录相同的目录。但是这会产生同样的错误。

我也对错误消息中给出的目录感到困惑;

  

,P://.vagrant.d/insecure_private_key

为什么提到“P”驱动器?

可以找到我的Vagrantfile here

感谢有关解决此错误的任何建议。

7 个答案:

答案 0 :(得分:7)

我通过硬编码insecure_private_key文件的路径来替换insecure_private_key的路径来修复问题。

所以它来自:

config.ssh.private_key_path = [
    customKey,
    "C:/Users/My.User/.vagrant.d/insecure_private_key"
]

要:

var app_cached_providers = {};

app.config(['$controllerProvider',
  function(controllerProvider) {
    app_cached_providers.$controllerProvider = controllerProvider;
  }
]);

答案 1 :(得分:6)

看起来好像是因为您可能已经执行了删除insecure_private_key的流浪摧毁。

但是,vagrant文​​件会查找puphpet\files\dot\ssh files,如果它们在那里,它会查找insecure_private_key。

delete (rename) id_rsa

中的puphpet\files\dot\ssh个文件

这为我修好了!

答案 2 :(得分:2)

您也可以删除puphpet文件夹rm -rf puphpet/files/dot/ssh/*中的所有文件,当您运行vagrant配置时,vm应该重新生成它们。

答案 3 :(得分:1)

我不确定您的Vagrant安装有什么问题,但是这一行:

vagrant_home = (ENV['VAGRANT_HOME'].to_s.split.join.length > 0) ? ENV['VAGRANT_HOME'] : "#{ENV['HOME']}/.vagrant.d"

是设置稍后使用的变量的原因:

config.ssh.private_key_path = [
  customKey,
  "#{vagrant_home}/insecure_private_key"
]

发生这种情况的原因是,从Vagrant 1.7开始,它会为您拥有的每个VM生成一个唯一的私钥。我认为,如果Vagrant检测到它之前生成了一个唯一的密钥,那么Vagrant中的一个错误完全忽略了用户定义的private_key_path

PuPHPet在这里做的是让Vagrant生成其唯一的SSH密钥,然后一旦VM启动并具有SSH访问权限,它就会进入并生成另一个密钥来替换它。

我们之所以取代它,是因为这种新的Vagrant功能仅适用于OSX / Linux主机,因为Windows没有所需的工具。

我的方式适用于所有操作系统,因为它在VM本身内进行SSH密钥生成。

所有这些都与您的问题半关联​​,但答案是,如果尚未定义这些环境变量,您的Vagrant安装会出现问题。

答案 4 :(得分:1)

当您向队友分享您的puphet配置时,根据接受的答案,不建议对private_key_path进行硬编码。

我的主机是Windows,所以我添加了一个值为%USERPROFILE%的新环境变量VAGRANT_HOME,因为这是我的/.vagrant.d文件夹所在的位置。添加此变量时,请确保关闭已打开的命令提示,以便应用变量

希望这有帮助

答案 5 :(得分:0)

添加到PunctuationMark的答案中,您还可以在Vagrantfile中设置VAGRANT_HOME环境变量:ENV['VAGRANT_HOME'] = ENV['USERPROFILE']

答案 6 :(得分:0)

在Vagrantfile中编辑以下行对我有用。

PRIVATE_KEY_SOURCE      = '~/.vagrant.d/insecure_private_key'