Cómo Configurar Múltiples Claves SSH en WSL para Proyectos de Trabajo y Personales
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. 🚀