¿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.

oscar Escrito por oscar 16 March 2025 72 0

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

Listado de comandos de Git

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 y id_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

 


Comentario

Debe aceptar antes de enviar