Bitbucket: Diferentes cuentas y misma clave SSH
El escenario habitual es que tengamos una sola cuenta de Bitbucket con nuestra clave SSH asociada a ella, pero puede sernos útil tener una segunda cuenta para otro tipo de proyectos.
El problema es que Bitbucket no permite añadir la misma clave SSH a dos usuarios diferentes.
El error que nos devuelve es: «Someone has already registered that SSH key«.
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 "email@email.com" |
Copiamos la clave generada que se encuentra en ~/.ssh/id_rsa.pub y la damos de alta en la cuenta del usuarioA en Bitbucket.
Ahora vamos a generar una nueva clave para el usuarioB:
ssh-keygen -t rsa -f ~/.ssh/usuarioB -C "email@email.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).
Copiamos la clave que se ha creado en el archivo ~/.ssh/usuarioB.pub y la asociamos a la cuenta del usuarioB en Bitbucket.
Para poder utilizar múltiples claves SSH, tenemos que crear un archivo ~/.ssh/config con un contenido similar a este:
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 habitual:
git clone git@bitbucket.org:usuarioA/proyecto.git |
Si ahora queremos clonar un repositorio del usuarioB, utilizaremos la segunda clave SSH que hemos generado para este usuario:
git clone git@bitbucket-usuarioB:usuarioB/proyecto.git |
Podríamos ampliar esta configuración para tener una clave SSH para cualquier cuenta que tengamos (Github, Bitbucket, etc.).