Cómo Configurar Múltiples Claves SSH en WSL para Proyectos de Trabajo y Personales

Cómo Configurar Múltiples Claves SSH en WSL para Proyectos de Trabajo y Personales

SofiDev

Angela Sofía Osorio

Trabajar con múltiples claves SSH es esencial cuando manejas proyectos personales y de trabajo desde un mismo entorno. En este artículo, te enseñaremos 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)

Paso 5: Prueba la Conexión SSH

Verifica que puedes conectarte a GitHub usando la clave sofidev:

ssh -T github-sofidev

Si todo está configurado correctamente, recibirás un mensaje como:

Hi SofiDevO! You've successfully authenticated, but GitHub does not provide shell access.

Conclusión

Con esta configuración, el repositorio carrusel-infinito usará automáticamente la clave sofidev al interactuar con GitHub. Esto te permite separar proyectos personales y de trabajo, garantizando seguridad y organización en tu entorno de desarrollo.

Si tienes más proyectos, simplemente añade configuraciones similares en ~/.ssh/config con sus respectivas claves y alias. 🚀