Cómo Gestionar Múltiples Claves SSH para tus Cuentas de GitHub o Bitbucket

Trabaja de manera segura desde diferentes dispositivos

Pablo Ortuño
DotTech
3 min readApr 10, 2020

--

Como desarrolladores, generalmente usamos nuestra clave pública SSH para comunicarnos con los gestores de GIT. Es muy común tener una cuenta personal y una cuenta de trabajo, o una cuenta para cada cliente, pero esto tiene una complicación.

Photo by Yancy Min on Unsplash

El problema viene cuando queremos tener una única clave pública para cada uno de los usuarios. En el caso de Bitbucket nos encontraremos con este mensaje:

Bitbucket no permite que una clave pública sea utilizada por dos usuarios. Por tanto, vamos a necesitar una clave diferente para cada usuario.

Por ello, nuestro objetivo será encontrar la forma de que GIT sea capaz de entender qué clave debe usar en función del proyecto o usuario.

Creando múltiples claves para múltiples cuentas

El sistema ideal es tener una clave SSH para cada cliente o para cada cuenta de Bitbucket que tengamos, pero la gestión de éstas se hace complicada. Sin embargo, podemos crear un archivo de configuración que resolverá todos nuestros problemas y decidirá cuándo se debe usar una clave u otra.

Nota: Estos pasos están pensados para entornos UNIX.

Creando nuestros pares de claves:

El comando es muy sencillo:

  • Vamos a la carpeta ~/.ssh.
  • Ejecutamos ssh-keygen para iniciar el sistema de generado de clave.
  • Elegimos un nombre para nuestro par de claves.
Generando el par de claves SSH

Repetimos esta acción con todas las cuentas para las cuales queramos crear un par de claves.

En este caso tendré los siguientes pares de claves:

  • id_rsa_personal y id_rsa_personal.pub
  • id_rsa_empresa1 y id_rsa_empresa1.pub
  • id_rsa_empresa2 y id_rsa_empresa2.pub

Creando el archivo de configuración

Ahora necesitamos que, cuando hagamos git clone por SSH, el sistema sea capaz de interpretar qué clave SSH debe solicitar.

Creamos un nuevo archivo dentro de nuestra carpeta ~/.ssh llamado config

Este archivo será el encargado de decidir qué clave SSH solicitar en función de la cuenta de Bitbucket/GitHub desde la que hagamos la petición.

Un pequeño detalle a tener en cuenta es que es necesario que el host de Bitbucket tenga el formato <nombreEmpresa>.bitbucket.org. Sin embargo, nuestros clone de Bitbucket se parecen más a:

git clone git@bitbucket.org:<nombreEmpresa>/myApp.git

Para que el filtro del host funcione, simplemente tendremos que modificar la URL para que quede de la siguiente manera:

git clone git@<nombreEmpresa>.bitbucket.org:<nombreEmpresa>/myApp.git

El sistema seguirá funcionando exactamente igual, pero nos solicitará la contraseña de la clave SSH correcta y de esta forma podremos gestionar todas nuestras cuentas sin tener que cambiar la configuración de GIT.

--

--

Pablo Ortuño
DotTech
Writer for

Entrepreneur, software developer. My passion, create great products and bring value with technology. Founder at #Trampoline #BuscoExtra, tech lead at #Soluble