Cómo trabajar con  Múltiples Cuentas de GIT

Cómo trabajar con Múltiples Cuentas de GIT

SofiDev

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.