Trabajando con Vagrant en un entorno Windows me encontré con un problema a la hora de conectar por SSH con las máquinas virtuales (aunque en este caso el término apropiado sería “boxes”):
- Vagrant utiliza por defecto el formato estándar OpenSSH para generar las claves.
- Al arrancar la máquina (box) de Vagrant, se crea automáticamente una clave privada que podremos utilizar posteriormente para autenticarnos y hacer login por SSH:
La clave privada estaba localizada en la siguiente ruta, aunque esto cada caso será particular en función del directorio en el que hayas creado el entorno para la máquina virtual:
C:\vagrant\project01\.vagrant\machines\default\virtualbox\private_key
En Windows suelo utilizar PuTTY o algún gestor de conexiones SSH que lo lleve integrado para administrar servidores UNIX/Linux, como por ejemplo mRemoteNG. Al intentar cargar la clave privada es cuando me surgieron problemas ya que su formato no es compatible con PuTTY. Tuve que recurrir entonces a PuTTYgen para realizar una sencilla conversión de formato.
Una vez tengamos disponible PuTTYgen lo ejecutamos y seguimos estos sencillos pasos:
- Importamos la clave privada en la pestaña
Conversions → Import key
- Una vez cargada la clave privada en PuTTYgen tal y como podemos ver:
Procedemos a guardarla en formato aceptado por PuTTY en el menú
File → Save private key
. No hace falta que pongamos una frase de paso (passphrase) aunque PuTTY nos lo sugiera. La clave privada se guardará con la extensión.ppk
(putty private key). Una vez guardada la clave, podremos utilizarla con PuTTY sin problemas. En caso de tener que convertir la clave pública, bastaría con cargarla igual que hemos hecho con la privada y después guardarla conFile → Save public key
El caso práctico que he puesto con Vagrant se puede aplicar a otras situaciones. Por ejemplo, en caso de que hayamos generado un par de claves pública/privada con OpenSSH a la manera tradicional:
ssh-keygen -t rsa
La clave privada generada no será compatible con PuTTY si en algún momento queremos utilizarla para autenticación. El procedimiento en cualquier caso para la conversión de formato es el mismo que el que he explicado en este artículo. De igual manera, puede que necesitemos realizar el proceso a la inversa, para lo que también podremos utilizar PuTTYgen.