Saltar al contenido principal

Configurar cuentas de Github y Gitlab en una misma máquina con SSH

Para acceder a los recursos de nuestras cuentas necesitamos una forma de autenticación y autorización. Con llaves SSH podemos autenticarnos de forma segura en Github y Gitlab sin ingresar usuario y contraseña cada vez que hacemos pull o push de código.

Ambas plataformas ofrecen una guía para generar las llaves SSH, agregarlas a tu cuenta y verificar la conexión.

Referencia: Github Docs - SSH y Gitlab Docs - SSH

En resumen, necesitamos:

  • Generar las llaves en nuestra máquina para cada cuenta.
  • Agregar las llaves públicas a sus respectivas cuentas.
  • Crear y configurar el archivo config de SSH (para múltiples llaves).
  • Verificar la conexión a nuestras cuentas.

Paso 1: Generar una nueva llave SSH con ssh-keygen​

Abre la terminal de tu preferencia.

ssh-keygen -t ed25519 -C "user@example.com" -f ~/.ssh/id_ed25519_github

Si usas PowerShell, es posible que no encuentre la carpeta /.ssh. En ese caso usa este comando.

ssh-keygen -t ed25519 -C "user@example.com" -f "$env:USERPROFILE\.ssh\id_ed25519_github"
  • La opción -t especifica el tipo de llave a crear, en este caso ed25519, un tipo popular de criptografía de llave pública.
  • La opción -C agrega información adicional sobre la llave, como su propósito o el usuario que la generó.
  • La opción -f indica el nombre del archivo (filename).
  • Hazlo para cada cuenta.

Ve a la carpeta .ssh. En Windows debería estar en C:\Users\<user>\.ssh.

id_ed25519_github
id_ed25519_github.pub
id_ed25519_gitlab
id_ed25519_gitlab.pub

Los archivos .pub son tus llaves públicas, que deben agregarse a tu cuenta de Github y a tu cuenta de Gitlab respectivamente.

Agrega tu llave SSH al ssh-agent​

ssh-add ~/.ssh/id_ed25519_github

Para PowerShell.

ssh-add c:/Users/<user>/.ssh/id_ed25519_github

Si no quieres escribir tu passphrase cada vez que Git use la llave SSH, puedes agregarla a la lista de llaves administradas por el agente SSH.

Paso 2: Agrega la llave pública a tus cuentas de Github y Gitlab​

Agrégala en Github:

Agrégala en Gitlab:

Paso 3: Crea y configura el archivo config de SSH (para múltiples llaves)​

En la ruta ~/.ssh crea un archivo nuevo llamado config. Este archivo le indica al cliente SSH qué llave usar para cada host.

cd ~/.ssh
touch config
# *puedes editar este archivo con el bloc de notas*

Agrega el siguiente contenido.

# Github account
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github

# Gitlab account
Host gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_ed25519_gitlab

Paso 4: Verifica la conexión a nuestras cuentas​

Para Github:

ssh -T git@github.com

Para Gitlab:

ssh -T git@gitlab.com

Deberías ver un mensaje de éxito indicando que tu llave SSH fue autenticada con tus cuentas.

Finalmente, puedes clonar un repositorio de Github o Gitlab y empezar a hacer pull y commits.