0Pricing
Cryptology Academy · Lección

Autenticación con clave pública y agent forwarding

Comprenda authorized_keys, las claves Ed25519 frente a RSA y las implicaciones de seguridad del agent forwarding de SSH.

Autenticación con clave pública y agent forwarding es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.

Formato del archivo authorized_keys

La autenticación mediante clave pública de SSH utiliza el archivo authorized_keys, que normalmente se encuentra en ~/.ssh/authorized_keys en el servidor. Cada línea contiene una clave pública con el formato: algorithm base64-key comment. El servidor comprueba si el cliente puede demostrar que posee la clave privada correspondiente mediante la firma de un desafío.

Generación de claves SSH con ssh-keygen

El comando ssh-keygen crea pares de claves para la autenticación. Al ejecutar ssh-keygen -t ed25519 se genera un par de claves Ed25519 moderno. Puede especificar un comentario con -C para identificar la clave, por ejemplo, su correo electrónico. De forma predeterminada, la herramienta guarda la clave privada (id_ed25519) y la clave pública (id_ed25519.pub) en ~/.ssh.

Comparación de tipos de claves: RSA, ECDSA y Ed25519

Las claves RSA de 4096 bits son muy compatibles con sistemas antiguos, pero tardan más en firmar. ECDSA con NIST P-256 es más rápido y produce firmas más pequeñas, aunque algunos criptógrafos cuestionan la selección de los parámetros de las curvas NIST. Ed25519, basado en Curve25519, es la práctica recomendada actualmente: ofrece claves y firmas pequeñas y rápidas, no tiene debilidades conocidas y está disponible en todas las implementaciones modernas de SSH.

Claves privadas protegidas con frase de contraseña

El archivo de clave privada debe protegerse con una frase de contraseña. ssh-keygen cifra la clave privada mediante una clave derivada de la frase de contraseña (bcrypt para las claves modernas), por lo que un atacante que robe el archivo no podrá utilizarlo sin la frase de contraseña. Sin una frase de contraseña, cualquiera que tenga acceso al archivo puede autenticarse como usted en cualquier servidor que almacene la clave pública correspondiente.

ssh-agent para la gestión de claves

El demonio ssh-agent mantiene en memoria las claves privadas descifradas durante una sesión de inicio de sesión. Se carga una clave con ssh-add ~/.ssh/id_ed25519, que solicita la frase de contraseña una sola vez. Las conexiones SSH posteriores solicitan al agente que firme los desafíos sin volver a introducir la frase de contraseña, combinando seguridad y comodidad.

Cómo ssh-agent firma los desafíos

Cuando un servidor SSH envía un desafío de autenticación, el cliente SSH delega la firma en ssh-agent mediante un socket de Unix. El agente realiza la firma criptográfica utilizando la clave privada almacenada en memoria y devuelve únicamente la firma. Los bytes de la clave privada nunca salen del proceso del agente, ni siquiera para llegar al propio cliente SSH.

Reenvío del agente: capacidades y riesgos

El reenvío del agente (ForwardAgent yes o ssh -A) permite que una sesión SSH remota utilice su agente local para autenticarse posteriormente en otros servidores. Esto resulta útil para atravesar hosts bastión sin copiar las claves privadas al bastión. Sin embargo, si el bastión se ve comprometido, un usuario root allí puede acceder al socket de su agente y autenticarse como usted en cualquier servidor.

ProxyJump frente a ForwardAgent para bastiones

ProxyJump (ssh -J bastion target) es la alternativa más segura a ForwardAgent para acceder a través de un host bastión. Crea un túnel TCP a través del bastión sin exponer allí el socket de su agente. El servidor de destino recibe una conexión directa de su cliente local, mientras que el bastión solo reenvía bytes TCP cifrados, sin ninguna capacidad de utilizar sus credenciales.

Autenticación mediante certificados SSH

SSH admite la autenticación basada en certificados, en la que una Autoridad certificadora (CA) firma las claves públicas de hosts y usuarios. En lugar de distribuir claves públicas individuales a cada servidor, se configuran los servidores para que confíen en su CA. Un certificado de usuario firmado concede acceso a todos los servidores que confían en esa CA, con restricciones opcionales de caducidad y de principales integradas en el certificado.

ssh-keyscan para recopilar claves en bloque

La herramienta ssh-keyscan se conecta a uno o más hosts y recupera sus claves públicas de host sin autenticación. Esto resulta útil para automatizar la incorporación de entradas en archivos known_hosts mediante scripts de implementación. La salida se puede redirigir directamente a un archivo known_hosts: ssh-keyscan -H example.com >> ~/.ssh/known_hosts.

Resumen del flujo de autenticación mediante claves

Autenticación mediante clave pública: el cliente envía la clave pública, el servidor comprueba authorized_keys, el servidor envía un desafío firmado con el identificador de sesión, el cliente (a través del agente) lo firma con la clave privada y el servidor verifica la firma utilizando la clave pública almacenada. Si es válida, la autenticación se realiza correctamente sin transmitir ninguna credencial secreta.

Selección del tipo de clave SSH

¿Qué tipo de clave SSH representa actualmente la práctica recomendada para nuevas implementaciones debido a su velocidad, su pequeño tamaño y sus sólidas propiedades de seguridad?

Repaso de la autenticación mediante clave pública

Conclusiones principales: almacene las claves públicas en authorized_keys, proteja las claves privadas con frases de contraseña, utilice ssh-agent para mantener las claves descifradas en memoria, prefiera el tipo de clave Ed25519, utilice ProxyJump en lugar de ForwardAgent para acceder a través de bastiones y evitar exponer el socket del agente, y considere los certificados SSH para una gestión de acceso escalable.

Preguntas frecuentes

¿La lección «Autenticación con clave pública y agent forwarding» es gratis?

Sí — el texto completo de «Autenticación con clave pública y agent forwarding» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Autenticación con clave pública y agent forwarding»?

Comprenda authorized_keys, las claves Ed25519 frente a RSA y las implicaciones de seguridad del agent forwarding de SSH. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cryptology Academy?

No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Autenticación con clave pública y agent forwarding»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?

Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Handshake de SSH y autenticación mediante claves de host
  2. Autenticación con clave pública y agent forwarding
  3. Túneles SSH y técnicas de port forwarding
  4. Refuerzo de SSH y prácticas recomendadas de auditoría
← Volver a Cryptology Academy