Claves SSH: Deja de Escribir Contraseñas
Las claves SSH reemplazan la autenticación por contraseña con pares de claves criptográficas. Mantienes la clave privada en tu máquina, pones la clave pública en el servidor (o GitHub), y nunca escribes una contraseña de nuevo. Es más seguro y más conveniente.
Generar una Clave
# Ed25519 (recomendado — rápido, seguro, claves cortas)
ssh-keygen -t ed25519 -C "tu@email.com"
# RSA (compatibilidad legada, si Ed25519 no es soportado)
ssh-keygen -t rsa -b 4096 -C "tu@email.com"Te preguntará ubicación y passphrase. Usa la ubicación por defecto (~/.ssh/id_ed25519) y siempre define una passphrase — protege la clave si tu máquina es comprometida.
Agregar a GitHub
# Copiar clave pública al clipboard
# macOS
pbcopy < ~/.ssh/id_ed25519.pub
# Linux
xclip -selection clipboard < ~/.ssh/id_ed25519.pub
# Windows
cat ~/.ssh/id_ed25519.pub | clipVe a GitHub → Settings → SSH and GPG keys → New SSH key. Pega. Prueba:
ssh -T git@github.com
# Hi username! You've been successfully authenticatedSSH Agent (No Reescribas Tu Passphrase)
# Iniciar el agente
eval "$(ssh-agent -s)"
# Agregar tu clave (pide passphrase una vez)
ssh-add ~/.ssh/id_ed25519
# macOS: agregar al Keychain (persiste entre reboots)
ssh-add --apple-use-keychain ~/.ssh/id_ed25519El Archivo SSH Config
El poder real. Crea ~/.ssh/config:
# GitHub personal
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
# GitHub del trabajo (cuenta diferente)
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
# Servidor de producción
Host prod
HostName 203.0.113.42
User deploy
IdentityFile ~/.ssh/id_ed25519
Port 2222
# Jump host (bastion)
Host internal-db
HostName 10.0.1.50
User admin
ProxyJump bastion
Host bastion
HostName bastion.example.com
User admin
IdentityFile ~/.ssh/id_ed25519Ahora en vez de ssh deploy@203.0.113.42 -p 2222 -i ~/.ssh/id_ed25519, solo escribe ssh prod.
Para el GitHub del trabajo, clona con: git clone git@github-work:empresa/repo.git
Copiar Clave al Servidor
# La forma fácil
ssh-copy-id user@servidor
# Forma manual
cat ~/.ssh/id_ed25519.pub | ssh user@servidor "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
# Corregir permisos (si el login falla)
ssh user@servidor "chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"Tipos de Clave Comparados
| Tipo | Tamaño | Seguridad | Compatibilidad |
|---|---|---|---|
| Ed25519 | 256 bits (fijo) | Excelente | OpenSSH 6.5+ (2014) |
| RSA 4096 | 4096 bits | Buena | Universal |
| ECDSA | 256/384/521 bits | Buena | OpenSSH 5.7+ |
| DSA | 1024 bits | Deprecado | No uses |
Consejos de Seguridad
- Siempre usa passphrase en la clave privada.
- Nunca compartas o commitees tu clave privada. El archivo sin
.pubes privado. - Usa claves diferentes para servicios diferentes (GitHub personal, trabajo, servidores).
- Deshabilita auth por contraseña en servidores después de configurar SSH keys:
PasswordAuthentication noen/etc/ssh/sshd_config. - Rota claves periódicamente, especialmente cuando miembros del equipo se van.
Genera claves: Generador de Contraseñas — crea passphrases fuertes para tus claves SSH.