2 de enero de 2025
Jenkins vs GitHub Actions
Hace poco me topé con un interesante artículo de la gente de Slack, donde narran su experiencia migrando de Jenkins a GitHub Actions (GHA).
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.
La idea es utilizar diferentes claves SSH para cada cuenta, sin necesidad de tener que ingresar credenciales constantemente.
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 usando el siguiente comando:
ssh-keygen -t ed25519 -C "Clave para mi segunda cuenta"
Debemos elegir un nombre distintivo para el archivo, como id_ed25519_segunda_cuenta, para evitar sobrescribir la clave SSH existente.
Ahora, debemos agregar la clave pública generada a nuestra cuenta de GitHub. Primero, copiamos el contenido de la clave pública:
cat ~/.ssh/id_ed25519_segunda_cuenta.pub
Luego, ve a GitHub y en la sección Settings > SSH and GPG keys selecciona New SSH Key y pega el contenido.
El archivo ~/.ssh/config permite gestionar diferentes claves para diferentes hosts. Editamos el archivo:
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
Para los repositorios de nuestra segunda cuenta, debemos actualizar la URL remota para usar el alias configurado:
git remote set-url origin git@github-pruebas:usuario/repositorio.git
Verifica que GitHub te reconozca correctamente:
ssh -T git@github.com
ssh -T git@github-pruebas
Si todo está bien, verás un mensaje de bienvenida confirmando la autenticación exitosa.
Una vez configurado, puedes realizar un push o pull normalmente. Git usará automáticamente la clave correcta asociada con el alias del repositorio.