DEV Community

Cover image for MULTIPLES LLAVES SSH PARA DIFERENTES CUENTAS EN GITHUB
Emanuel
Emanuel

Posted on

MULTIPLES LLAVES SSH PARA DIFERENTES CUENTAS EN GITHUB

Me ha tocado que, en algunas empresas para compartir el código, en lugar de compartir por medio de permisos del repositorio comparten las credenciales de una cuenta en Github. Si bien es cierto no es la mejor manera de compartir el código, pero ellos ya tienen un flujo de trabajo preestablecido.

La forma más segura de compartir información entre Github y un ambiente de desarrollo es mediante llaves SSH; sin embargo, si también estas trabajando en proyectos personales ya sea un emprendimiento o simplemente estas creando proyectos para aprender y conectas tu cuenta personal de la misma manera, Github te indicará que no puedes agregar una llave ssh dos veces, por lo tanto, tendrás que crear dos diferentes claves, una para cada cuenta. Pero: ¿Como creamos esas llaves y las relacionamos con las cuentas de Github?


Tabla de Contenido


Generación de llaves

Lo primero que debemos hacer es posicionarnos en la carpeta .ssh, regularmente en todos los sistemas operativos está ubicada en el home del usuario.

Luego debemos crear una llave ssh, una forma fácil de hacerlo es ejecutar el siguiente comando:

ssh-keygen
Enter fullscreen mode Exit fullscreen mode

Al momento de ejecutar el comando nos va a preguntar en cual archivo queremos guardar la clave, para este ejemplo podemos ponerle personal_github para la llave de nuestra cuenta personal. Luego nos va a preguntar si queremos ponerle una frase (o contraseña 😂) a nuestra llave, yo siempre recomiendo ponerla para mayor seguridad.

Listo, ya tenemos nuestra primera llave.

Después repetimos los mismos pasos para generar nuestra segunda llave, solo que ahora cuando nos vuelva a solicitar el nombre para la llave podemos poner work_github simulando la llave para nuestra cuenta de trabajo.

Si se crearon las llaves correctamente debes tener cuatro archivos de la siguiente manera:

personal_github
personal_github.pub

work_github
work_github.pub
Enter fullscreen mode Exit fullscreen mode

Agregar llaves a Github

Ahora en la sección de Llaves SSH y GPG en la configuración de Github debemos agregar las llaves de los archivos con extensión .pub, para ver el contenido de estos archivos podemos ejecutar el comando:

cat personal_github.pub

//además para la cuenta work deberíamos ejecutar

cat work_github.pub
Enter fullscreen mode Exit fullscreen mode

Relacionar llaves con Github

Cuando ya tengamos agregadas las llaves públicas a las respectivas cuentas de Github y tratamos de clonar un repositorio de esas cuentas nos informará del siguiente error:

Error Github

Este error es debido a que ya hemos creado las llaves, pero aún nos hace falta relacionarlas en nuestro ambiente. Vamos a ubicarnos en nuestra consola a la carpeta .ssh que está ubicada en el home de nuestro usuario del sistema operativo, como ejemplo podemos usar el siguiente comando:

cd ~/.ssh
Enter fullscreen mode Exit fullscreen mode

Cuando ya estemos en la carpeta debemos crear un archivo sin extensión llamado config. Dependiendo del sistema operativo así también va a depender el comando para crear el archivo, por ejemplo, en Linux puede ser:

touch config
Enter fullscreen mode Exit fullscreen mode

En Windows Powershell sería:

New-Item config
Enter fullscreen mode Exit fullscreen mode

Ahora debemos editar ese archivo, puedes hacerlo con tu editor de texto favorito. Yo lo editaré con VSCode por lo que voy a ejecutar el comando:

code touch
Enter fullscreen mode Exit fullscreen mode

Debemos colocar las siguientes configuraciones:

# Personal GitHub account
 Host personal.github.com
 HostName github.com
 IdentityFile ~/.ssh/personal_github
# Work GitHub account
 Host work.github.com
 HostName github.com
 IdentityFile ~/.ssh/work_github

Enter fullscreen mode Exit fullscreen mode

Acá estamos indicado el host al que pertenece la llave, el nombre de ese host y también donde está ubicada la llave correspondiente a cada host.

Clonar repositorios

Ahora para clonar los repositorios debemos modificar el comando de git, antes hacíamos:

git clone git@github.com:garcodas/example_bot.git
Enter fullscreen mode Exit fullscreen mode

Modificado sería:

git clone git@personal.github.com:garcodas/example_bot.git
Enter fullscreen mode Exit fullscreen mode

Como nos damos cuenta en el host del url del repositorio debemos colocar el nombre del host que hicimos en el archivo config que creamos en la carpeta .ssh, como estoy clonando un repositorio de mi cuenta personal coloque personal.github.com, si quisiera clonar algo del host work.github.com debería hacer el mismo proceso.

Top comments (0)