Todos los posts
Security SSH — Parte 2
EN ES

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.

(Actualizado June 6, 2019) 3 min read por b4rt

Serie: SSH

  1. 1. ¿Qué es SSH?
  2. 2. SSH: Llaves públicas
  3. 3. Configurando el servidor SSH

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:

AlgoritmoRecomendación
RSA 4096Estándar antiguo, aceptable pero más pesado
ECDSA 521Moderno, claves más pequeñas, seguridad equivalente o mejor
DSAObsoleto — no usar
Ed25519La 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.

Etiquetas: #ssh #linux #seguridad #cifrado #llaves #servidores

Comentarios

Stay in the loop

New posts about Linux, debugging, and systems programming. No noise, no spam — just signal.