Cómo gestionar múltiples cuentas de Git (GitHub y GitLab) con diferentes llaves SSH y usuarios por carpeta

100 views
Tiempo de lectura: 3 min
Desarrollo
Git
Tutorial
2025-03-11

En este tutorial aprenderás a gestionar varias cuentas de Git (por ejemplo, una personal y una de empresa) utilizando diferentes claves SSH y configuraciones automáticas por carpeta, todo organizado para que no tengas que ir cambiando el usuario o los remotes a mano.

✅ Objetivo

  • Tener una cuenta personal (GitHub y GitLab personal) con un mismo SSH.
  • Tener una cuenta de empresa (GitLab) con una SSH diferente.
  • Automatizar el user.name y user.email según la carpeta.
  • Usar remotes diferenciados con el SSH correcto, especialmente para la empresa.

1. 🔑 Crear y configurar las llaves SSH

Primero, generamos las llaves (si ya lo hiciste, puedes saltarte este paso).

1.1. Generar llave SSH personal

ssh-keygen -t rsa -b 4096 -C "tu-email-personal@example.com" -f ~/.ssh/id_rsa

1.2. Generar llave SSH de empresa

ssh-keygen -t rsa -b 4096 -C "tu-email-empresa@example.com" -f ~/.ssh/id_rsa_empresa1

1.3. Agregar las llaves a los agentes SSH

# Personal
ssh-add ~/.ssh/id_rsa
# Empresa
ssh-add ~/.ssh/id_rsa_empresa1

1.4. Subir las claves públicas a las plataformas

  • GitHub/GitLab personal: Subir `~/.ssh/id_rsa.pub`.
  • GitLab empresa: Subir `~/.ssh/id_rsa_empresa1.pub`.

2. ⚙️ Configurar SSH para usar las llaves correctas

Edita (o crea) el archivo `~/.ssh/config`:

nano ~/.ssh/config

Añade:

# Cuenta Personal (GitHub y GitLab Personal)
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
 
Host gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_rsa
 
# Cuenta de Empresa (GitLab Empresa)
Host gitlab.com-empresa1
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_rsa_empresa1

⚠️ Importante: Usar `gitlab.com-empresa1` como host para distinguirlo al clonar.


3. 👤 Configurar `user.name` y `user.email` según carpeta

Edita o crea el archivo `~/.gitconfig` global:

[user]
  name = Tu Nombre Personal
  email = tu-email-personal@example.com
 
[includeIf "gitdir:~/Developer/empresa1/"]
  path = ~/.gitconfig-empresa1

Crea el archivo `~/[CarpetaEmpresa]/.gitconfig`:

[user]
  name = Tu Nombre Empresa
  email = tu-email-empresa@example.com

4. 🚀 Clonar correctamente los repositorios

4.1. Cuenta personal (GitHub y GitLab personal)

git clone git@github.com:usuario/repositorio.git
git clone git@gitlab.com:usuario/repositorio.git

4.2. Cuenta empresa (GitLab empresa usando host personalizado)

git clone git@gitlab.com-empresa1:empresa/repositorio.git

5. 🛠️ Corregir remotes de proyectos antiguos (script automático)

5.1. Crear el script

#!/bin/bash
 
# Ruta base donde están los repositorios de empresa
 
BASE_DIR=~/Developer/empresa1
 
# Buscar todos los .git
 
find "$BASE_DIR" -type d -name ".git" | while read gitdir; do
  repo_dir=$(dirname "$gitdir")
echo "Corrigiendo remote en: $repo_dir"
 
cd "$repo_dir"
 
# Obtener remote actual
 
current_remote=$(git remote get-url origin)
 
# Reemplazar si es necesario
 
if [["$current_remote" == *"gitlab.com"* && "$current_remote" != *"gitlab.com-empresa1"*]]; then
new_remote=${current_remote/git@gitlab.com:/git@gitlab.com-empresa1:}
    echo "Cambiando remote de: $current_remote a: $new_remote"
    git remote set-url origin "$new_remote"
else
echo "Remote ya correcto o no es gitlab: $current_remote"
fi
done

5.2. Hacerlo ejecutable

chmod +x fix-remotes.sh

5.3. Ejecutar

./fix-remotes.sh

6. ✅ Automatización al clonar (alias útil)

Alias en `/.bashrc` o `/.zshrc`:

alias gitempresa1='git clone git@gitlab.com-empresa1:'

Usar:

gitempresa1 empresa/repositorio.git

Con esta configuración tendrás todo organizado para trabajar con múltiples cuentas de Git sin confusiones. 🎉

Guía Completa para Montar una VPS con Next.js en Hostinger

Hosting
Tutorial

Aprende paso a paso cómo desplegar un proyecto Next.js en una VPS de Hostinger. Configura Node.js, Nginx, PM2 y gestiona certificados SSL con Certbot para asegurar tu aplicación web.

Rediseña tu proyecto gratis este diciembre con Roast

Desarrollo
Diseño
Rediseño

Durante el mes de diciembre, ofrece un rediseño gratuito de tu proyecto a través de Roast, un servicio especializado en mejorar la apariencia y funcionalidad de sitios web y aplicaciones.