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_rsaHost 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 😉