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
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
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
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:
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
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
En Windows Powershell sería:
New-Item config
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
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
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
Modificado sería:
git clone git@personal.github.com:garcodas/example_bot.git
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)