SSH: Llaves públicas
Cómo funciona la autenticación por clave pública en SSH, cómo generar pares de claves ECDSA y RSA, y cómo desplegarlas en tu servidor de forma segura.
En la parte 1 vimos qué es SSH y cómo funciona su modelo de cifrado. Ahora vamos a lo práctico: la autenticación por contraseña es cómoda pero débil. La autenticación por clave pública es como deberías conectarte a tus servidores.
¿Por qué no usar contraseñas?
Las contraseñas pueden ser atacadas por fuerza bruta, filtradas, reutilizadas en otros servicios, o capturadas por malware en tu máquina local. Un par de claves fuerte elimina todos estos vectores de ataque — no hay nada que adivinar y nada que filtrar del lado del servidor.
Eligiendo un algoritmo
SSH soporta varios algoritmos criptográficos para la generación de claves. Las principales opciones:
| Algoritmo | Recomendación |
|---|---|
| RSA 4096 | Estándar antiguo, aceptable pero más pesado |
| ECDSA 521 | Moderno, claves más pequeñas, seguridad equivalente o mejor |
| DSA | Obsoleto — no usar |
| Ed25519 | La mejor opción en sistemas modernos |
La matemática detrás de esto: una clave RSA de 2048 bits proporciona aproximadamente 112 bits de seguridad. Una clave ECDSA-521 proporciona 260 bits de seguridad con un tamaño de clave mucho menor y menos uso de ancho de banda.
Usa ECDSA-521 o Ed25519.
Generando un par de claves
ECDSA (recomendado)
ssh-keygen -t ecdsa -b 521
Con una ruta personalizada:
ssh-keygen -f ~/.ssh/key_ecdsa -t ecdsa -b 521
RSA (si ECDSA no está soportado)
ssh-keygen -t rsa -b 4096
El comando preguntará dónde guardar la clave (por defecto: ~/.ssh/id_ecdsa) y pedirá una frase de contraseña.
Esto genera dos archivos:
~/.ssh/id_ecdsa— tu clave privada (nunca la compartas)~/.ssh/id_ecdsa.pub— tu clave pública (cópiala a los servidores)
Copiando la clave pública al servidor
Método 1: ssh-copy-id (más fácil)
ssh-copy-id -i ~/.ssh/id_ecdsa.pub -p 22 user@192.168.1.5
Opciones:
-i— ruta a tu clave pública-p— puerto SSH en el servidor remoto-f— omitir verificación de clave existente (usar con cuidado)
Esto añade tu clave pública al archivo ~/.ssh/authorized_keys en el servidor.
Método 2: copia manual
Si ssh-copy-id no está disponible:
cat ~/.ssh/id_ecdsa.pub | ssh user@192.168.1.5 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Verificando la configuración
Después de copiar la clave, prueba la conexión:
ssh -i ~/.ssh/id_ecdsa user@192.168.1.5
Si se conecta sin pedir contraseña (solo la frase de contraseña de tu clave), está funcionando correctamente.
Próxima parte
En la parte 3 aseguraremos el servidor SSH en sí — deshabilitando el login como root, desactivando la autenticación por contraseña y endureciendo el sshd_config.
Comentarios
Stay in the loop
New posts about Linux, debugging, and systems programming. No noise, no spam — just signal.