Saltar al contenido
Ende Sun
Volver al blog

Flujo de trabajo

Dos cuentas de GitHub en el mismo equipo, detrás de una VPN

3 min de lectura

Dos cuentas de GitHub en el mismo equipo, detrás de una VPN

Uso dos cuentas de GitHub en el mismo portátil: una personal para mis proyectos y otra de trabajo para los repositorios de la empresa. La mayor parte del tiempo funciona sin problemas con claves SSH. Pero cuando trabajo desde China, donde me conecto a través de una VPN, el comando habitual de clonado empezó a fallarme, y la solución resultó lo bastante pequeña como para dejarla anotada.

El síntoma

Con dos cuentas configuradas en local, clonar con la dirección estándar de GitHub no funcionaba en ese entorno:

# No me funcionaba detrás de la VPN con dos cuentas configuradas
git clone git@github.com:personal-user/repo.git

La solución: usar el alias de host SSH, no github.com

Cuando tienes más de una cuenta, cada una suele tener su propia clave SSH, y ~/.ssh/config define un alias de host por cuenta que apunta a GitHub con la clave correcta. Algo así (los nombres son de ejemplo):

Host personal
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_personal

Host work
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_work

La clave está en usar ese alias en la URL del remoto en lugar de github.com. Así SSH aplica la configuración del alias, incluida la clave que debe presentar:

# Cuenta personal
git clone git@personal:personal-user/repo.git

# Cuenta de trabajo
git clone git@work:work-org/repo.git

Usar el alias de forma consistente fue lo que hizo que el clonado volviera a funcionar con ambas cuentas en mi caso. Además tiene un efecto secundario útil: siempre queda explícito qué identidad usa cada repositorio.

Plan B: cuando Git no encuentra el host

A veces Git directamente no conseguía resolver el host. Cuando pasa, cambio el remoto de ese repositorio a HTTPS con el usuario en la URL:

git remote set-url origin https://personal-user@github.com/personal-user/repo.git

Entonces Git pide una credencial para ese usuario concreto por HTTPS. Es menos elegante que SSH, pero permite hacer el push cuando la ruta SSH no colabora.

Lo que tengo presente

  • Con varias cuentas, nunca clono con git@github.com: a secas; siempre uso el alias de la cuenta a la que debe pertenecer el repositorio.
  • Si un repositorio ya se clonó con la dirección equivocada, lo corrijo con git remote set-url en lugar de volver a clonarlo.
  • HTTPS con usuario explícito es el plan B, no el modo por defecto.

Es algo pequeño, pero dejarlo por escrito me ha ahorrado redescubrirlo cada vez que cambio de red.