Las claves SSH son una forma segura y práctica de autenticarte con servicios como GitHub o GitLab sin tener que ingresar tu usuario y contraseña cada vez.
📦 ¿Prefieres automatizar todo este proceso? 👉 Ver script en GitHub
Esta guía te enseñará cómo generarlas y configurarlas desde cero usando Linux, macOS o WSL en Windows.
Table of Contents
Open Table of Contents
🔐 ¿Qué es una clave SSH?
Un par de claves SSH se compone de:
- Clave privada: Se guarda en tu equipo y nunca se comparte.
- Clave pública: Se sube a GitHub y sirve para validar que eres tú.
✅ ¿Por qué usar claves SSH con Git?
- Seguridad: Más difícil de interceptar que una contraseña.
- Comodidad: No tienes que autenticarte cada vez que haces
push
opull
. - Automatización: Ideal para scripts o flujos CI/CD.
1. Verifica si ya tienes una clave SSH
ls -al ~/.ssh
Si ves archivos como id_rsa
y id_rsa.pub
, ya tienes una. Puedes usarla o reemplazarla.
2. Genera una nueva clave SSH
ssh-keygen -t rsa -b 4096 -C "tu_correo@example.com"
Presiona Enter
para aceptar la ruta predeterminada. Luego puedes dejar la contraseña en blanco.
📁 Se generarán:
- Clave privada:
~/.ssh/id_rsa
- Clave pública:
~/.ssh/id_rsa.pub
3. Inicia y configura el agente SSH
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
Verás un mensaje como:
Identity added: /home/usuario/.ssh/id_rsa (tu_correo@example.com)
4. Agrega tu clave pública a GitHub
-
Copia la clave:
cat ~/.ssh/id_rsa.pub
O usa el script, que intentará copiarla automáticamente.
-
Pega la clave, asigna un nombre (por ejemplo: “Laptop de casa”) y guarda.
5. Verifica la conexión
ssh -T git@github.com
La primera vez responderás yes
.
Resultado esperado:
Hi tu_usuario! You've successfully authenticated, but GitHub does not provide shell access.
🛠️ Solución de problemas
🔐 Permisos incorrectos
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
🧠 El agente SSH no está corriendo
eval "$(ssh-agent -s)"
🚀 Conclusión
Ya puedes trabajar con Git y GitHub usando claves SSH: más seguro, más rápido y sin repetir credenciales.
¡Ahora sí, listo para git push
sin interrupciones! 🙌