SSH y claves RSA explicadas: genera, usa y protege tus pares de claves
Una guía práctica sobre los pares de claves SSH y RSA: cómo funcionan, cómo generarlos en tu navegador y cómo usarlos para el acceso seguro a servidores y el cifrado.
La criptografía de clave pública es la base de la comunicación segura en internet: las conexiones SSH, HTTPS, la firma de JWT y el correo electrónico cifrado dependen de ella. Entender cómo funcionan los pares de claves te convierte en un desarrollador más eficiente y en un usuario con mayor conciencia de seguridad.
El concepto fundamental: claves públicas y privadas
Un par de claves está formado por dos claves matemáticamente vinculadas:
- Clave privada — Se queda en tu máquina. Nunca la compartas. Piensa en ella como tu identidad.
- Clave pública — Compártela libremente. La colocas en servidores, en GitHub, en configuraciones de JWT.
Las matemáticas funcionan en una sola dirección: los datos cifrados con una clave pública solo pueden descifrarse con la clave privada correspondiente. Y los datos firmados con una clave privada pueden verificarse con la clave pública, sin revelar la clave privada.
Claves SSH: acceso a servidores sin contraseña
SSH (Secure Shell) es el estándar para el acceso remoto a servidores. La autenticación por contraseña funciona, pero tiene debilidades: las contraseñas pueden adivinarse, robarse mediante phishing o filtrarse. La autenticación con claves SSH es fundamentalmente más sólida:
- Tu cliente presenta una prueba criptográfica usando tu clave privada
- El servidor verifica la prueba contra la clave pública que instalaste
- Ninguna contraseña viaja por la red — no hay nada que interceptar
Configurar la autenticación SSH con claves:
# Generar un par de claves (Ed25519 es el estándar moderno)
ssh-keygen -t ed25519 -C "tu-email@ejemplo.com"
# Copiar la clave pública a un servidor
ssh-copy-id usuario@tuservidor.com
# Conectarse — sin necesidad de contraseña
ssh usuario@tuservidor.com
La clave pública se coloca en ~/.ssh/authorized_keys en el servidor. La clave privada nunca sale de tu máquina.
Ed25519 vs RSA para SSH
Ed25519 es la recomendación actual:
- Claves más pequeñas (256 bits) con una seguridad equivalente o superior a RSA-4096
- Generación y verificación de firmas más rápidas
- Compatible con todos los servidores SSH modernos
RSA sigue siendo muy utilizado, especialmente en entornos empresariales con sistemas más antiguos:
- 2048 bits es el tamaño mínimo aceptable hoy en día
- 4096 bits ofrece un margen adicional para claves de larga duración
- Los tamaños de clave más grandes implican una autenticación ligeramente más lenta
Genera claves SSH en tu navegador con nuestro Generador de claves SSH — Ed25519 y ECDSA, usando la Web Crypto API. Ningún material de clave sale de tu navegador.
Claves RSA: cifrado y firma
Las claves RSA se usan más allá de SSH: para certificados TLS, firma de JWT, correo electrónico cifrado (PGP) y autenticación de APIs.
Casos de uso comunes de RSA:
JWT (JSON Web Tokens) con RS256:
- Firma los tokens con tu clave privada RSA
- Los clientes verifican con la clave pública
- A diferencia de HS256 (simétrico), el verificador nunca necesita el secreto de firma
Firma de código:
- Firma un artefacto de lanzamiento con tu clave privada
- Los usuarios verifican la firma con tu clave pública publicada
- Demuestra que el artefacto proviene de ti y no fue manipulado
Certificados TLS/SSL:
- Las autoridades certificadoras firman tu clave pública con su clave privada
- Los navegadores verifican usando la clave pública de la CA (integrada en el navegador)
Genera pares de claves RSA en formato PEM con nuestro Generador de claves RSA — de 2048 o 4096 bits, completamente en tu navegador.
El formato PEM explicado
Las claves RSA y SSH se distribuyen habitualmente en formato PEM (Privacy Enhanced Mail):
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC7o4qne60...
-----END PRIVATE KEY-----
El encabezado y el pie identifican el tipo de clave. El contenido intermedio son los datos de la clave codificados en base64. Los distintos encabezados indican diferentes tipos de clave:
BEGIN RSA PRIVATE KEY— Formato tradicional PKCS#1BEGIN PRIVATE KEY— Formato PKCS#8 (más común en herramientas modernas)BEGIN PUBLIC KEY— Clave pública en formato PKCS#8BEGIN OPENSSH PRIVATE KEY— Formato propio de OpenSSH para claves SSH
Cómo proteger tu clave privada
La seguridad de la clave privada es fundamental:
- Nunca la subas a git — Añade
*.pem,id_rsaeid_ed25519a tu.gitignore - Usa una frase de contraseña — Cifra la clave en reposo. Aunque alguien obtenga el archivo, no podrá usarlo sin la frase de contraseña.
- Restringe los permisos — SSH requiere
chmod 600en los archivos de clave privada; se niega a usar claves legibles por otros - Rótala si se ve comprometida — Genera un nuevo par y elimina la clave pública antigua de todos los servidores
# Establecer los permisos correctos en tu clave privada
chmod 600 ~/.ssh/id_ed25519
Huellas digitales de claves
Una huella digital es un hash corto de una clave pública que se usa para verificar la identidad sin comparar la clave completa:
ssh-keygen -lf ~/.ssh/id_ed25519.pub
# Salida: 256 SHA256:abc123... tu-email@ejemplo.com (ED25519)
Al conectarte a un servidor por primera vez, SSH te muestra la huella digital del host y te pide que la confirmes. Verifica esta huella digital por un canal separado (la documentación del proveedor del servidor) antes de aceptarla.
Resumen
Los pares de claves SSH y RSA proporcionan autenticación y cifrado fundamentalmente más sólidos que las contraseñas. Usa Ed25519 para SSH, RSA-4096 para firma y cifrado, protege siempre las claves privadas con una frase de contraseña y genera las claves localmente — nunca permitas que un servicio de terceros genere tu clave privada por ti.