Vagrantエラーを修正する方法: `private_key_path`ファイルが存在していなければなりません:

私は PuPHPet を使って仮想開発環境を作成しています。

昨日、私は新しいボックス用の設定ファイルを生成しました。 vagrant up コマンドを使用してスピンアップしようとすると、次のエラーメッセージが表示されます。

C:\xx>vagrant up

Bringing machine 'default' up with 'virtualbox' provider... There are errors in the configuration of this machine. Please fix the following errors and try again:

SSH: * private_key_path file must exist: P://.vagrant.d/insecure_private_key

私はこの質問に遭遇し、puphpetからinsecure_private_keyを移動しました\ Vagrantfileがあるのと同じディレクトリにfiles \ dot \ ssh。しかし、これは同じエラーになります。

エラーメッセージに表示されているディレクトリも混乱しています。

P://.vagrant.d/insecure_private_key

なぜ 'P'ドライブが言及されているのですか?

私のVagrantfileはこちらにあります。

このエラーを解決するためのアドバイスをいただければ幸いです。

4
質問で更新しました。
追加された 著者 Sid,
Vagrantfile を共有できますか?
追加された 著者 Vaibhav Sagar,

9 答え

あなたは insecure_private_key を削除した破壊的な破壊を実行した可能性があるからです。

しかし、vagrantファイルは puphpet \ files \ dot \ sshファイルを検索し、存在する場合はinsecure_private_keyを探します。

delete (rename) the id_rsa files in puphpet\files\dot\ssh

これは私のためにそれを修正しました!

6
追加された
puphpet \ files \ dot \ sshにあるid_rsaファイルを削除(名前変更)してください。
追加された 著者 Bo Pennings,

insecure_private_keyファイルへのパスをハードコーディングして、insecure_private_keyへのパスを置き換えることで問題を解決しました。

だからそれはから来ました:

config.ssh.private_key_path = [
    customKey,
    "#{ENV['HOME']}/.vagrant.d/insecure_private_key"
]

に:

config.ssh.private_key_path = [
    customKey,
    "C:/Users/My.User/.vagrant.d/insecure_private_key"
]
5
追加された
修正されましたありがとうございます。
追加された 著者 Wes Eklund,

puphpetフォルダ rm -rf puphpet/files/dot/ssh/* 内のすべてのファイルを削除するだけで、vagrant provisionを実行したときにvmがそれらを再生成するはずです。

2
追加された

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アクセスが可能になると、入ってきてそれを置き換えるための別のキーを生成します。

これを置き換える理由は、Windowsに必要なツールがないため、この新しいVagrant機能はOSX/Linuxホストでのみ機能するためです。

私自身のやり方はすべてのOSに渡ってうまくいきます。なぜならそれはVM自身の中でSSH鍵を生成するからです。

これらはすべてあなたの質問に関連していますが、答えはそれらの環境変数が定義されていなければあなたのVagrantインストールに何か問題があるということです。

1
追加された
情報をありがとう。私はVagrantの私のバージョンをアップグレードしましたが、役に立ちませんでした。
追加された 著者 Sid,

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アクセスが可能になると、入ってきてそれを置き換えるための別のキーを生成します。

これを置き換える理由は、Windowsに必要なツールがないため、この新しいVagrant機能はOSX/Linuxホストでのみ機能するためです。

私自身のやり方はすべてのOSに渡ってうまくいきます。なぜならそれはVM自身の中でSSH鍵を生成するからです。

これらはすべてあなたの質問に関連していますが、答えはそれらの環境変数が定義されていなければあなたのVagrantインストールに何か問題があるということです。

1
追加された
情報をありがとう。私はVagrantの私のバージョンをアップグレードしましたが、役に立ちませんでした。
追加された 著者 Sid,

あなたのチームメイトとあなたのpuphet設定を共有しているとき、private_key_pathをハードコーディングすることは受け入れられた答えのようにお勧めできません。

私のホストコンピュータはwindowsなので、私の/.vagrant.dフォルダがある場所なので、%USERPROFILE%という新しい環境変数VAGRANT_HOMEを追加しました。この変数を追加するときは、開いているコマンドプロンプトを必ず閉じて、変数が適用されるようにしてください。

お役に立てれば

1
追加された

あなたのチームメイトとあなたのpuphet設定を共有しているとき、private_key_pathをハードコーディングすることは受け入れられた答えのようにお勧めできません。

私のホストコンピュータはwindowsなので、私の/.vagrant.dフォルダがある場所なので、%USERPROFILE%という新しい環境変数VAGRANT_HOMEを追加しました。この変数を追加するときは、開いているコマンドプロンプトを必ず閉じて、変数が適用されるようにしてください。

お役に立てれば

1
追加された

Adding to PunctuationMark's answer you can also set the VAGRANT_HOME environment variable in your Vagrantfile: ENV['VAGRANT_HOME'] = ENV['USERPROFILE']

0
追加された

Adding to PunctuationMark's answer you can also set the VAGRANT_HOME environment variable in your Vagrantfile: ENV['VAGRANT_HOME'] = ENV['USERPROFILE']

0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com