16

Copiar llaves SSH de Windows a WSL

Si decidiste instalar una distribución de Linux dentro de Windows 10 a través del Windows Subsystem for Linux (WSL), notarás que al momento de querer hacer push o pull a alguno de tus repositorios en GitHub no tendrás los permisos para hacerlo.
.
Screenshot de error en termianl
.
Esto es debido a que las configuraciones que tenías en tu ambiente de desarrollo con Windows para tener una conexión con llaves ssh no se conservará para tu entorno de desarrollo con Linux.
.
Para este problema tendrías dos soluciones:
.

  • Crear una nueva conexión segura generando otro par de llaves.
  • Copiar las mismas llaves que usas en Windows.

.
En este tutorial voy a explicar como hacer la segunda opción.
.

Copiar llaves SSH a WSL

.
Las llaves ssh en Windows están usualmente guardadas en una carpeta oculta llamada .ssh dentro de la ruta c:\Users\<username>\. Nuestro objetivo es copiar esa carpeta completa de Windows hacia nuestro subsistema de Linux.
.
Para hacer esto debes abrir tu terminal (la que configuraste para correr Linux) y verificar si la carpeta .ssh existe en tu root. Para chequearlo debes usar el siguiente comando:
.

ls -a ~

.
Si no ves la carpeta .ssh por ninguna parte entonces puedes utilizar el siguiente comando:
.

cp -r /mnt/c/Users/<username>/.ssh ~/.ssh

.
Recuerda que debes sustituir “username” por tu nombre de usuario en Windows.
.
En caso de que la carpeta exista, tienes que verificar su contenido, si dentro ves algún arhcivo llamado id_rsa o id_rsa.pub, significa que ya tienes un par de llaves generadas para su WSL, por lo que tendrías es que configurar tu conexión segura a GitHub usando esas llaves que ya tienes disponible.
.
Nota imortante: Si ya tienes un par de llaves creadas no copies las de Windows. Esto las sobreescribirá y a menos que estés seguro para qué generaste esas llaves esto puede ser problemático.
.
En caso de que la carpeta esté vacía, puedes ejecutar el siguiente comando para copiar tus llaves de Windows a tu subsistema Linux:
.

cp -r /mnt/c/Users/<username>/.ssh/. ~/.ssh

.
Ya completados estos pasos tendrás listas tus credenciales para usarlas en tu terminal configurado para trabajar con Linux. Pero aún queda un paso más y es arreglar los permisos en el archivo de las llaves.
.
Screenshot de error en termianl
.

Arreglando permisos

.
Para arreglar estos permisos lo que tendrías que hacer es correr el siguiente comando:
.

chmod 600 ~/.ssh/id_rsa

.
Una vez arreglado este detalle, ya tendrás listo todo para conectarte a GitHub utilizando las mismas llaves ssh que utilizas en Windows.

Escribe tu comentario
+ 2
7
5648Puntos

Hola, me gustaría compartir lo siguiente para complementar este artículo:

Con WSL me encontré con un problema bastante molesto, una vez añadidas mis llaves sólo las podía utilizar en la misma terminal abierta, en cuanto la cerraba y volvía a abrir la terminal ya no podía utilizar las llaves.

La solución, editar el archivo .bashrc del WSL para agregar las llaves cada que se reinicie la terminal
bashrc.PNG

En el editor de su preferencia hay que añadir las siguientes líneas

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
habilitar llaves.PNG

Esto volverá a añadir las llaves ssh cada que se abra la terminal.

Hay otra opción para hacer esto mismo con keychain, hay que instalarlo primero

$ sudo apt install keychain

y luego en el mismo archivo .bashrc agregar la siguiente línea en vez de las anteriores

eval``keychain --eval --agents ssh id_rsa

Pero esta segunda forma no me funcionó a mi, por lo que tuve que irme por la primera opción un poco más arcaica pero igualmente funcional.

Espero que le sirva a alguien si tienen el mismo problema que yo

0
33882Puntos
3 años

¡Mil gracias por tu aporte! Está asombroso para complementar lo demás.