Diferentes cuentas y misma clave SSH en Bitbucket

Lo normal que tenemos la mayoría, o hemos tenido, suele ser una cuenta en Bitbucket, en la que tienes tu clave SSH asociada a ella, pero luego resulta que tenemos una segunda cuenta en Bitbucket (de trabajo, otra personal…) en la que queremos meter la clave ssh y no podemos porque nos da un error: Someone has already registered that SSH key.

¿Te ha pasado?

El problema es que Bitbucket no permite añadir la misma clave SSH a dos usuarios diferentes.

Bien. Necesitas una segunda clave SSH. Veamos como hacerlo.

Crear clave SSH (si todavía no la tienes)

Voy a suponer que aún no hemos añadido las claves SSH a nuestras cuentas en Bitbucket. Para este ejemplo, la primera cuenta será usuarioA y la segunda, usuarioB.

Primero debemos crear una clave SSH con el comando ssh-keygen:

ssh-keygen -t rsa -C "usuarioA@dominio.com"

Te pedirá un passphrase, con darle al enter dejándolo en blanco será suficiente. Te lo pedirá dos veces.

Ahora ya sólo queda copiar la clave generada que se encuentra en ~/.ssh/id_rsa.pub y la damos de alta en la cuenta del usuarioA en Bitbucket.

Bien, ahora vamos a generar una nueva clave para el usuarioB.

ssh-keygen -t rsa -f ~/.ssh/usuarioB -C "usuarioB@dominio.com"

(Lo que hacemos con el parámetro «-f ~/.ssh/usuarioB» es indicar el archivo donde guardar la nueva clave SSH (en este ejemplo, el archivo se llamará usuarioB).)

Te pedirá un passphrase, con darle al enter dejándolo en blanco será suficiente. Te lo pedirá dos veces también.

Copiamos la clave que se ha creado en el archivo ~/.ssh/usuarioB.pub y la asociamos a la cuenta del usuarioB en Bitbucket.

Configuración para usar múltiples claves ssh

Para poder utilizar múltiples claves SSH, tenemos que editar el archivo ~/.ssh/config. Si no lo tienes lo puedes crear con touch ~/.ssh/config y ponemos el siguiente contenido (edítalo según tus necesidades):

Host bitbucket.org
  User git
  Hostname bitbucket.org
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa

Host bitbucket-usuarioB
  User git
  Hostname bitbucket.org
  PreferredAuthentications publickey
  IdentitiesOnly yes
  IdentityFile ~/.ssh/usuarioB

Con esta configuración, podemos clonar repositorios del usuarioA de la forma clásica:

git clone git@bitbucket.org:usuarioA/nombre_de_tu_proyecto.git

Si ahora queremos clonar o trabajar en un repositorio del usuarioB, utilizaremos la segunda clave SSH que hemos generado para este usuario:

git clone git@bitbucket-usuarioB:usuarioB/nombre_de_tu_proyecto.git

Nota: Podríamos ampliar esta configuración para tener una clave SSH para cualquier cuenta que tengamos (Github, Bitbucket, etc.).

Y esto es todo. Espero que te pueda servir.

Si te gusta mi contenido, puedes "invitarme" a un café ☕️ para apoyarme. 👇🏻

¿Me invitas a un café?