Usar múltiples cuentas con repositorios remotos puede resultar complicado. En esta entrada explico cómo podemos conseguir que Git utilice la clave SSH correcta para el repositorio en el que estemos trabajando.
Creación de diferentes claves públicas
Para generar una clave nueva ejecutaremos el siguiente comando:
$ ssh-keygen -t rsa -C "your_email@youremail.com" -f "your_user_id_file"
La opción -C es un comentario para ayudar a identificar la clave. La opción -f especifica el nombre del fichero.
En el ejemplo, crearemos 2 claves que debemos guardar en el directorio ~/.ssh/:
~/.ssh/id_rsa_user1
~/.ssh/id_rsa_user2
Una vez creadas, las añadiremos al anillo de claves del agente SSH de autentificación ejecutando los comandos:
$ ssh-add ~/.ssh/id_rsa_user1
$ ssh-add ~/.ssh/id_rsa_user2
NOTA: Podemos eliminar todas las claves anteriormente cacheadas mediante el comando:
$ ssh-add -D
Finalmente podemos comprobar las claves almacenadas mediante el comando:
$ ssh-add -l
Importación de la clave pública en GitHub
Debes importar la clave púbica generada anteriormente en su cuenta GitHub asociada.
Consulta la documentación de GitHub para ver cómo hacerlo.
Configuración de SSH
En el directorio ~/.ssh/ crearemos un fichero llamado config:
$ cd ~/.ssh/
$ touch config
He introduciremos un contenido similar a este:
#user1 account
Host github.com-user1
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_user1
#user2 account
Host github.com-user2
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_user2
Clona tu repositorio y modifica su configuración Git
Clona tu repositorio git
$ git clone git@github.com-user1:user1/your-repo-name.git
Si ya tenías una copia local será necesario que actualices el origin:
$ git remote set-url origin git@github.com-user1:user1/your-repo-name.git
Ahora ve al repositorio Git local que quieres configurar y ejecuta:
$ git config user.name "user1"
$ git config user.email "user1@example.com"
o puedes tener tu configuración git global:
$ git config --global user.name "user1"
$ git config --global user.email "user1@example.com"
Repite el proceso con el otro usuario y su repositorio.
A partir de aquí, podemos usar el flujo normal para publicar nuestro código
$ git add .
$ git commit -m "your comments"
$ git push
vía