¿Cómo configurar varias claves privadas SSH para diferentes repositorio git?
Aprende a configurar varias claves SSH para gestionar múltiples cuentas de Git (GitHub, GitLab, Bitbucket) sin conflictos. Guía paso a paso y mejores prácticas.
Cuando trabajas con múltiples cuentas de Git (como una cuenta personal y otra corporativa) o colaboras en proyectos en diferentes plataformas (GitHub, GitLab, Bitbucket), es común encontrarte con problemas de autenticación SSH. El uso de una única clave SSH por defecto puede limitarte y generar conflictos entre tus repositorios.
En esta guía, aprenderás cómo configurar varias claves SSH y usarlas sin problemas en diferentes proyectos o cuentas. Esta es una solución sencilla y profesional para gestionar múltiples identidades SSH y mantener tus flujos de trabajo organizados y seguros.
Antes de iniciar, recomiendo leer...
Cómo Crear un Repositorio en Bitbucket Paso a Paso
Generar varias claves SSH
Primero, genera una clave SSH para cada cuenta o repositorio que necesites.
Para este paso debemos ubicarnos en la carpeta del usuario que se ha iniciado sesion, debemos ingresar desde la terminal de comandos o desde CMD.
Nota: Dentro de este directorio, debemos asegurarnos de que exista el directorio `.shh`, si no esta lo debemos crear.
Acceder directorio usuario en Windows
cd c:/Users/oscar/.ssh
Directorio usuario linux
cd /home/oscar/.ssh
Con el siguiente comando creamos las keys que necesitemos
ssh-keygen -t rsa -b 4096 -C "DIRECCION_DEL@CORREO.com" -f id_rsa_NOMBRE_KEY
Como resultado nos generará
$ ssh-keygen -t rsa -b 4096 -C "DIRECCION_DEL@CORREO.com" -f id_rsa_NOMBRE_KEY
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_bitbucket
Your public key has been saved in id_rsa_bitbucket.pub
The key fingerprint is:
SHA256:iHnJkzDYCl1GV6GtU6D4eryertyertyertyertyerysZeJ4 DIRECCION_DEL@CORREO.com
The key's randomart image is:
+---[RSA 4096]----+
|ooo++ o.o. |
| o o |
| . |
+----[SHA256]-----+
Esto creará dos pares de claves en tu carpeta ~/.ssh/
:
-
id_rsa_NOMBRE_KEY
yid_rsa_NOMBRE_KEY.pub
Agregar las claves al agente SSH
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa_NOMBRE_KEY
Nos deberá retornar como respuesta
Identity added: id_rsa_NOMBRE_KEY (DIRECCION_DEL@CORREO.com)
Configurar el archivo .ssh/config
El archivo ~/.ssh/config
es un archivo de configuración que permite personalizar y automatizar el comportamiento de tus conexiones SSH.
- Definir alias de conexión (Host personalizados): Puedes crear nombres cortos para servidores o servicios remotos, de modo que no tengas que escribir direcciones largas o comandos complicados cada vez.
- Asignar claves SSH específicas por host: Es súper útil cuando tienes varias claves SSH y quieres que cada una se use para un servidor o cuenta distinta (como vimos en la configuración de varias cuentas de GitHub/GitLab).
- Configurar opciones avanzadas por host:
- Puedes personalizar:
- El puerto SSH (si no es el típico
22
) - La cantidad de intentos de autenticación
- Reenvío de agentes
- Compression
- Control de conexiones persistentes, etc.
Continuando con la configuración, procedemos a crear el archivo config donde colocamos la siguiente configuración
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_NOMBRE_KEY
Por ultimo, copiamos la id_rsa_NOMBRE_KEY.pub el repositorio de código git que estemos configurando
cat id_rsa_NOMBRE_KEY.pub
Clonar o actualizar URLs de tus repositorios
Ahora debes clonar o actualizar la URL remota de cada repositorio usando el alias del Host
que definiste.
Para clonar:
git clone git@github-personal:codigoelectronica/blog.git
Para actualizar:
git remote set-url origin git@github-personal:codigoelectronica/blog.git
Verificar la conexión
Asegúrate de que cada clave funciona correctamente:
ssh -T git@github-personal