EmilianoDecember 28, 2024

Gestionar múltiples cuentas de GitHub usando SSH

En este post exploraremos cómo configurar múltiples cuentas de GitHub en una misma máquina local utilizando SSH, lo cual es útil cuando trabajamos con proyectos personales y de trabajo, o cuando temos diferentes cuentas para distintos proyectos. La idea es utilizar diferentes claves SSH para cada cuenta, sin necesidad de tener que ingresar credenciales constantemente.

Generar claves SSH para cada cuenta de GitHub

Cuando trabajamos con múltiples cuentas, cada cuenta debe tener su propia clave SSH. Vamos a generar una clave SSH nueva para la segunda cuenta de GitHub.
Usaremos el siguiente comando para generar una nueva clave SSH para tu segunda cuenta:

ssh-keygen -t ed25519 -C "Clave para mi segunda cuenta"

Debemos elegir un nombre para el archivo de la clave. Guardamos nuestra clave con un nombre distintivo, como id_ed25519_segunda_cuenta, para evitar sobrescribir la clave SSH existente.

Agregar la clave SSH a GitHub

Ahora, debemos agregar la clave pública generada a nuestra cuenta de GitHub.
Copiamos el contenido de la clave pública:

cat ~/.ssh/id_ed25519_segunda_cuenta.pub

Debemos ir a GitHub y en la sección Settings > SSH and GPG keys selecciona New SSH Key, y pegamos el contenido de la clave pública. Añadimos un nombre descriptivo, como "Segunda cuenta de trabajo".

Configurar el archivo ~/.ssh/config

El siguiente paso es crear o editar el archivo ~/.ssh/config, que permite gestionar diferentes claves SSH para diferentes hosts. Este archivo le dice a Git cuál clave usar dependiendo de la cuenta de GitHub con la que
estemos interactuando.

Editamos el archivo de configuración:

nano ~/.ssh/config

Agregamos las siguientes configuraciones:

# Cuenta personal (la cuenta por defecto)
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519

# Cuenta secundaria (trabajo u otros proyectos)
Host github-pruebas
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_segunda_cuenta

Configurar las URL remotas de los repositorios

Ahora que tenemos el archivo ~/.ssh/config configurado, debes asegurarnos de que los repositorios usen el alias correcto para cada cuenta.
Si estamos trabajando con nuestra cuenta personal, no necesitamos hacer nada especial. Sin embargo, para los repositorios de nuestra segunda cuenta, debemos actualizar la URL remota de los repositorios para usar el alias que configuramos en el archivo SSH.

Para cambiar la URL remota de un repositorio usamos:

git remote set-url origin git@github-pruebas:usuario/repositorio.git

Debemos reemplazar usuario y repositorio con los valores correspondientes.

Verificar la configuración SSH

Es importante que verifiquemos que GitHub nos reconoce correctamente al usar las diferentes claves SSH. Podemos hacer esto con los siguientes comandos:

Para nuestra cuenta personal:

ssh -T git@github.com

Y para nuestra segunda cuenta:

ssh -T git@github-pruebas

Si todo está bien configurado, deberíamos ver un mensaje que diga algo como:

Hi usuario! You've successfully authenticated, but GitHub does not provide shell access.

Realizar un Push o Pull con la cuenta correcta

Una vez que todo esté configurado, podemos realizar un push o pull de nuestros repositorios como lo haríamos normalmente. Git usará la clave correcta para la cuenta asociada con cada repositorio.