
Cómo trabajar con Múltiples Cuentas de GIT

Angela Sofía Osorio
Tiempo de lectura 4 minutes
Trabajar con múltiples claves SSH es esencial cuando manejas proyectos personales y de trabajo desde un mismo entorno.Hoy vamos a aprender cómo configurar claves SSH en WSL para que puedas alternar entre ellas fácilmente, sin errores de autenticación.
Si aún no sabes como conectar git a Github mediante llave ssh, te recomiendo ir primero a este artículo para que te quede más claro.
Paso 1: Verifica las Claves Existentes
Antes de empezar, asegúrate de tener las claves SSH necesarias. En mi caso, usare de ejemplo las siguientes claves:
# Escribe el comando ls ~/.ssh
ls ~/.ssh
#deberías poder ver las llaves que haz creado hasta ahora:
~/.ssh/
├── trabajo # Clave privada para trabajo
├── trabajo.pub # Clave pública para trabajo
├── sofidev # Clave privada para uso personal
├── sofidev.pub # Clave pública para uso personal
Si no tienes las claves generadas, puedes crearlas con el siguiente comando:
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/nueva_clave
O en su lugar con rsa si tu sistema no soporta Ed25519
ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/nombre_clave
Sigue las instrucciones y asegúrate de elegir un nombre de archivo único (por ejemplo, trabajo_clave
o personal_clave
).
Inicializa el ssh-agent en el fondo:
eval "$(ssh-agent -s)"
Agrega tu SSH private key al ssh-agent.
ssh-add ~/.ssh/nombre_clave
Ahora revela tu clabe pública( ¡No la compartas con nadie!):
#cambia nombre_clave por el que tú le pusiste.
#Recuerda que es la llave publica ".pub"
cat ~/.ssh/nombre_clave.pub
#selecciona y copia la clave
#agregala en github (ver video)
Agrega tu clave a Github, yendo a settings>SSH and GPG Keys:

Da click en agregar Nueva llave SSH y pega la claver en el área de texto correspondiente.

Paso 3: Configura el Archivo ~/.ssh/config
El archivo de configuración SSH te permitirá alternar entre las claves para cada proyecto. Abre o crea este archivo si no existe.
El archivo no existe:
Si el archivo no exite deberás crearlo.
# vamos a movernos hacia la ruta ~/.ssh
cd ~/.ssh
Una vez ahí puedes usar el comando ls para verifficar si realmente no existe el archivo config
#vamos a crearlo haciendo uso del comando touch
touch config
Ahora podemos proceder a abrir el archivo. para ello podemos usar el comando nano para usar el editor de código integrado o podemos usar el comando code:
#Abrir el archivo usando nano
nano ~/.ssh/config #Si estás en otra ruta
nano config # si acabas de crear el archivo (Estás dentro del directorio .ssh)
# Abrir con vscode usando el comando code
code ~/.ssh/config #Si estás en otra ruta
code config # si acabas de crear el archivo (Estás dentro del directorio .ssh)
Agrega configuraciones para tus claves existentes. Por ejemplo:
# Configuración para sofidev (Personal)
Host github-sofidev
HostName github.com
User git
IdentityFile ~/.ssh/sofidev
# Configuración para formula (Trabajo)
Host github-trabajo
HostName github.com
User git
IdentityFile ~/.ssh/trabajo
Explicación de las líneas:
Host
: Es un alias que usaremos para identificar cada clave.HostName
: Siempre serágithub.com
(o el dominio de tu servidor git).User
: Siempre serágit
.IdentityFile
: Ruta a la clave privada correspondiente.
En el caso de nano: Guarda los cambios (Ctrl + O
, luego Enter
) y cierra el archivo (Ctrl + X
).
Paso 4: Configura las URLs de los Repositorios
Cada repositorio debe apuntar al alias correspondiente. Cambia la URL remota con el siguiente comando:
Ejemplo con un repositorio real:
#este es el SSH con el que clonas normalmente:
[email protected]:SofiDevO/carrusel-infinito.git
Lo que debemos hacer para clonarlo usando, por ejemplo, la llave personal, es cambiar esta parte @github.com
por el @github-sofidev
, quedando de la siguiente manera:
# Hemos reemplazado github.com por github-sofidev
git@github-sofidev:SofiDevO/carrusel-infinito.git
Ejemplo para un repositorio de trabajo:
Si se trata de un proyecto existente deberás agregarlo de la siguiente manera:
git remote set-url origin git@github-trabajo:usuario_trabajo/carrusel-infinito.git
Recuerda que para contribuir en repositorios que no son de tu propiedad. Lo mejor es hacer un Fork. Acá te dejo el repositorio del carrusel infinito:
https://github.com/SofiDevO/carrusel-infinito
Si no te permite agregarlo de esta manera, siempre puedes remover el origen remoto:
git remote remove origin #Esto remueve el origen remoto actual
Para luego volverlo a agregar pero cambiando el alias correspondiente:
#agregamos el origen remoto pero con el alias actualizado:
git remote add origin git@github-trabajo:usuario_trabajo/carrusel-infinito.git
Recuerda que si estás tratando de contribuir a un proyecto de alguien más, deberás primero hacer un fork para tenerlo en tus repositorios:

Verifica el origen remoto
Puedes verificar si ya está correctamente usnado el siguiente comando:
git remote -v
Esto te debería devolver la respuesta de tu origen de fetch y de push:
origin git@github-sofidev:SofiDevO/carrusel-infinito.git (fetch)
origin git@github-sofidev:SofiDevO/carrusel-infinito.git (push)
Siguientes pasos🦝
Ahora que hemosconfigurado nuestras llaves SSH vamos a asegurarnos de que se usen las credenciales correctas.
Primero tenemos que verificar el archivo git config
ls -a ~ | grep .gitconfig
#Esto debe devolverte el archivo gitconfig:
.gitconfig
Ya que verificamos que el archivo .gitcong está creado, procederemos a editarlo.
Nota: Si estás usando nano, al terminar de editar, debes presionar CTRL + o para guardar, presionas ENTER para confirmar, y CTRL + X para salir.
#Puedes usar el editorintegrado en la consola (nano) o abrirlo con VisualStudio:
#Con nano
nano ~/.gitconfig
#Con Vscode
code ~/.gitconfig
Ahora debemos verificar que la configuración de tu cuenta principal esté correcta:
[user]
name = tu-nombre-de-udario #(Ejmplo: Patatadev)
email = [email protected] #(Tu email de GitHub. Ejemplo: [email protected])
Lo que vamos a hacera continuación son dos pasos: Primero agregaremos una condicional diciéndo que cualquier repositorio ubicado dentro de ~/ruta/proyectos-trabajo/
usará una configuración diferente.
[includeIf "gitdir:~/ruta/proyectos-trabajo/"] #La ruta hacia el directorio del trabajo
path = ~/.gitconfig-trabajo
Bueno, le estamos indicando que debe tomar la configuración del archivo en el path ~/.gitconfig-trabajo
pero este no existe, así que vamos a crearlo 🦝.
#Haciendo uso del comando touch, crearemos la variante ".gitconfig-trabajo"
touch ~/.gitconfig-trabajo
#Ahora procedemos a editar el archivo:
nano ~/.gitconfig-trabajo
debemos de tener listos los datos de nuestra cuenta de trabajo y vamos agregar las siguientes líneas:
[user]
name = Tu Nombre Profesional
email = [email protected]
Guarda los cambios y listo 🦝. Ahora, cada vez que crees o clones un proyecto en el directorio trabajo, git será redirigido y usará los datos de gitconfig de tu trabajo.