Cómo corregir el error Vagrant: el archivo `private_key_path` debe existir:

He estado utilizando PuPHPet para crear entornos de desarrollo virtual.

Ayer generé un archivo de configuración para una nueva caja. Cuando intento girarlo con el comando vagrant up , aparece el siguiente mensaje de error:

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

Me topé con esta pregunta y moví la insegure_private_key de puphpet \ files \ dot \ ssh en el mismo directorio donde se encuentra el Vagrantfile. Sin embargo esto da el mismo error.

También estoy confundido por el directorio dado en el mensaje de error;

P: //.vagrant.d/insecure_private_key

¿Por qué se menciona la unidad 'P'?

Puede encontrar mi Vagrantfile aquí .

Agradecemos cualquier consejo para resolver este error.

4
Actualizado en cuestión.
agregado el autor Sid, fuente
¿Puedes compartir tu Vagrantfile ?
agregado el autor Vaibhav Sagar, fuente

9 Respuestas

Parece que se debe a que puedes haber realizado una destrucción errante que eliminó el insecure_private_key .

Pero el archivo vagrant busca los puphpet \ files \ dot \ ssh files , si están allí, busca la insecure_private_key.

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

¡Esto me lo arregló!

6
agregado
eliminar (renombrar) los archivos id_rsa en puphpet \ files \ dot \ ssh funcionó para mí!
agregado el autor Bo Pennings, fuente

Solucioné el problema reemplazando la ruta de acceso a insecure_private_key mediante la codificación de la ruta de acceso al archivo insecure_private_key.

Así pasó de

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

A:

config.ssh.private_key_path = [
    customKey,
    "C:/Users/My.User/.vagrant.d/insecure_private_key"
]
5
agregado
¡Está arreglado! ¡Gracias!
agregado el autor Wes Eklund, fuente

También puede simplemente eliminar todos los archivos en la carpeta puphpet rm -rf puphpet/files/dot/ssh/* y vm debería regenerarlos cuando ejecute vagrant provision.

2
agregado

No estoy seguro de lo que está mal con su instalación de Vagrant, pero esta línea:

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

es lo que configura la variable que se usa más adelante aquí:

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

La razón por la que ocurre esto es que, a partir de Vagrant 1.7, genera una clave privada única para cada VM que tenga. Hay, lo que considero, un error en el que Vagrant ignora por completo el private_key_path definido por el usuario si detecta que generó una clave única anteriormente.

Lo que PuPHPet está haciendo aquí es permitir que Vagrant genere su clave SSH única, luego, una vez que la VM se inicia y tiene acceso a SSH, entra y genera otra clave para reemplazarla.

La razón por la que lo estamos reemplazando es porque esta nueva característica de Vagrant solo funciona en hosts OSX/Linux, debido a que Windows no tiene las herramientas necesarias.

Mi forma de trabajo funciona en todos los sistemas operativos porque realiza la generación de claves SSH dentro de la propia VM.

Todo esto está parcialmente relacionado con su pregunta, pero la respuesta es que algo está mal con su instalación de Vagrant si esas variables de entorno no se han definido.

1
agregado
Gracias por la info. Actualicé mi versión de Vagrant pero fue en vano.
agregado el autor Sid, fuente

No estoy seguro de lo que está mal con su instalación de Vagrant, pero esta línea:

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

es lo que configura la variable que se usa más adelante aquí:

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

La razón por la que ocurre esto es que, a partir de Vagrant 1.7, genera una clave privada única para cada VM que tenga. Hay, lo que considero, un error en el que Vagrant ignora por completo el private_key_path definido por el usuario si detecta que generó una clave única anteriormente.

Lo que PuPHPet está haciendo aquí es permitir que Vagrant genere su clave SSH única, luego, una vez que la VM se inicia y tiene acceso a SSH, entra y genera otra clave para reemplazarla.

La razón por la que lo estamos reemplazando es porque esta nueva característica de Vagrant solo funciona en hosts OSX/Linux, debido a que Windows no tiene las herramientas necesarias.

Mi forma de trabajo funciona en todos los sistemas operativos porque realiza la generación de claves SSH dentro de la propia VM.

Todo esto está parcialmente relacionado con su pregunta, pero la respuesta es que algo está mal con su instalación de Vagrant si esas variables de entorno no se han definido.

1
agregado
Gracias por la info. Actualicé mi versión de Vagrant pero fue en vano.
agregado el autor Sid, fuente

Cuando compartes la configuración de tu puphet con tus compañeros de equipo, no es recomendable codificar la ruta_de_ privado_servicio privado según la respuesta aceptada.

Mi computadora host es Windows, así que he agregado una nueva variable de entorno VAGRANT_HOME con el valor% USERPROFILE% ya que es donde reside mi carpeta /.vagrant.d. Cuando agregue esta variable, asegúrese de cerrar las solicitudes de comando que están abiertas para que se aplique la variable

Espero que esto ayude

1
agregado

Cuando compartes la configuración de tu puphet con tus compañeros de equipo, no es recomendable codificar la ruta_de_ privado_servicio privado según la respuesta aceptada.

Mi computadora host es Windows, así que he agregado una nueva variable de entorno VAGRANT_HOME con el valor% USERPROFILE% ya que es donde reside mi carpeta /.vagrant.d. Cuando agregue esta variable, asegúrese de cerrar las solicitudes de comando que están abiertas para que se aplique la variable

Espero que esto ayude

1
agregado

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

0
agregado

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

0
agregado
PHP - Comunidad española
PHP - Comunidad española
6 de los participantes

En este grupo hablamos de PHP. Partner: es.switch-case.com