كيفية إصلاح خطأ 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

لقد عثرت على هذا السؤال وانتقلت إلى insecure_private_key من puphpet \ files \ dot \ ssh إلى نفس الدليل حيث يكون Vagrantfile. ومع ذلك هذا يعطي نفس الخطأ.

أنا أيضا مرتبك من قبل الدليل الوارد في رسالة الخطأ ؛

وP: //.vagrant.d/insecure_private_key

لماذا يتم ذكر محرك الأقراص P؟

يمكن العثور على My Vagrantfile هنا .

نقدر أي نصيحة لحل هذا الخطأ.

4
تحديث في السؤال.
وأضاف المؤلف Sid, مصدر
هل يمكنك مشاركة Vagrantfile الخاص بك؟
وأضاف المؤلف Vaibhav Sagar, مصدر

9 إجابة

يبدو أنه بسبب أنك ربما تكون قد قمت بتدمير متشرد والذي حذف insecure_private_key .

ولكن الملف المتشرد يبحث عن ملفات puphpet \ files \ dot \ ssh ، إذا كان هناك ، فإنه يبحث عن insecure_private_key.

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

هذه ثابتة بالنسبة لي!

6
وأضاف
حذف (إعادة تسمية) ملفات id_rsa في puphpet \ files \ dot \ ssh عملت بالنسبة لي!
وأضاف المؤلف 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/* ويجب على 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 يتجاهل تماما private_key_path المعرّفة من قبل المستخدم إذا اكتشفت أنه أنشأ مفتاحاً فريداً في السابق.

ما يقوم به PuPHPet هنا هو السماح لـ Vagrant بتوليد مفتاح SSH الفريد الخاص بها ، ثم بمجرد تشغيل VM وتشغيل SSH ، فإنه يدخل ويولد مفتاحًا آخر لاستبداله.

السبب في أننا نستبدلها لأن ميزة Vagrant الجديدة هذه تعمل فقط على مضيفي OSX/Linux ، بسبب عدم امتلاك Windows للأدوات المطلوبة.

تعمل طريقي عبر جميع أنظمة التشغيل لأنها تقوم بإنشاء مفتاح SSH داخل جهاز VM نفسه.

كل هذا متعلق بسؤالك ، لكن الإجابة هي أن هناك خطأ ما في تثبيت 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 يتجاهل تماما private_key_path المعرّفة من قبل المستخدم إذا اكتشفت أنه أنشأ مفتاحاً فريداً في السابق.

ما يقوم به PuPHPet هنا هو السماح لـ Vagrant بتوليد مفتاح SSH الفريد الخاص بها ، ثم بمجرد تشغيل VM وتشغيل SSH ، فإنه يدخل ويولد مفتاحًا آخر لاستبداله.

السبب في أننا نستبدلها لأن ميزة Vagrant الجديدة هذه تعمل فقط على مضيفي OSX/Linux ، بسبب عدم امتلاك Windows للأدوات المطلوبة.

تعمل طريقي عبر جميع أنظمة التشغيل لأنها تقوم بإنشاء مفتاح SSH داخل جهاز VM نفسه.

كل هذا متعلق بسؤالك ، لكن الإجابة هي أن هناك خطأ ما في تثبيت Vagrant إذا لم يتم تحديد متغيرات البيئة هذه.

1
وأضاف
شكرا للمعلومة. لقد قمت بترقية الإصدار الخاص بي من Vagrant ولكن دون جدوى.
وأضاف المؤلف Sid, مصدر

عندما تقوم بمشاركة تكوين puphet الخاص بك إلى زملائك في الفريق ، لا ينصح بقوة ترميز private_key_path حسب الإجابة المقبولة.

جهاز الكمبيوتر المضيف الخاص بي هو نظام windows لذا قمت بإضافة متغير بيئة جديد VAGRANT_HOME بقيمة٪ USERPROFILE٪ حيث يوجد المجلد /vagrant.d الخاص بي. عند إضافة هذا المتغير فقط تأكد من إغلاق أوامر الأوامر المفتوحة حتى يتم تطبيق المتغير

أتمنى أن يساعدك هذا

1
وأضاف

عندما تقوم بمشاركة تكوين puphet الخاص بك إلى زملائك في الفريق ، لا ينصح بقوة ترميز private_key_path حسب الإجابة المقبولة.

جهاز الكمبيوتر المضيف الخاص بي هو نظام windows لذا قمت بإضافة متغير بيئة جديد VAGRANT_HOME بقيمة٪ USERPROFILE٪ حيث يوجد المجلد /vagrant.d الخاص بي. عند إضافة هذا المتغير فقط تأكد من إغلاق أوامر الأوامر المفتوحة حتى يتم تطبيق المتغير

أتمنى أن يساعدك هذا

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
وأضاف