0Pricing
Cryptology Academy · Lección

SSH: protección del acceso remoto

Recorra el handshake de SSH, la autenticación mediante claves de host y la forma en que SSH protege las sesiones remotas.

SSH: protección del acceso remoto 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.

SSH-1 frente a SSH-2: historia de su obsolescencia

SSH-1, el protocolo Secure Shell original, contenía un fallo de diseño fundamental que permitía a un atacante activo insertar datos arbitrarios en una sesión cifrada sin ser detectado. SSH-2, un rediseño completo del protocolo publicado en 2006 como RFC 4251-4254, solucionó estas debilidades mediante protocolos separados para las capas de transporte, autenticación y conexión, además de una comprobación de integridad más sólida mediante HMAC. SSH-1 está obsoleto y ningún servidor moderno debería habilitarlo.

Capa de transporte de SSH: cifrado e integridad

El protocolo de la capa de transporte de SSH gestiona el intercambio inicial de claves y establece un canal cifrado y protegido contra modificaciones. Negocia los algoritmos para el intercambio de claves (normalmente ECDH), la autenticación del host (normalmente Ed25519 o RSA), el cifrado simétrico (normalmente AES-256-CTR o ChaCha20-Poly1305) y el MAC (normalmente HMAC-SHA2-256). Cada paquete posterior se cifra y se comprueba su integridad mediante los algoritmos negociados.

Capa de autenticación de usuarios de SSH

Una vez protegida la capa de transporte, la capa de autenticación de usuarios negocia cómo demuestra el usuario su identidad al servidor. Tres métodos habituales son la contraseña (el usuario escribe una contraseña, que se envía cifrada a través de la capa de transporte), la clave pública (el usuario demuestra que posee una clave privada correspondiente a una clave pública autorizada en el servidor) y GSSAPI (integración del inicio de sesión único de Kerberos para entornos empresariales).

Capa de conexión de SSH: canales multiplexados

La capa de conexión de SSH multiplexa varios canales lógicos sobre una única conexión de transporte cifrada. Una sesión SSH habitual tiene un canal para el shell interactivo. Los canales adicionales permiten la redirección de puertos, la redirección de X11 y la transferencia de archivos mediante SFTP, todo ello compartiendo la misma conexión autenticada y cifrada. Las solicitudes de canal permiten al cliente solicitar un pseudoterminal, establecer variables de entorno o ejecutar un comando específico.

Verificación de la clave del host y TOFU

Al conectarse por primera vez a un servidor SSH, el cliente recibe la clave del host del servidor y debe decidir si confía en ella. La política predeterminada es Trust On First Use (TOFU): se solicita al usuario que verifique la huella digital de la clave (normalmente mostrada como un hash como SHA256:...) y, si la acepta, se almacena en el archivo known_hosts. En las conexiones posteriores, la clave almacenada se compara con la que presenta el servidor, y cualquier discrepancia activa una advertencia contundente sobre posibles ataques de intermediario.

known_hosts y huellas digitales de claves

El archivo known_hosts, almacenado en ~/.ssh/known_hosts, mantiene una base de datos de las claves de host de los servidores, indexadas por nombre de host y dirección IP. Cada entrada vincula la dirección de un servidor con su clave pública. Si la clave de un servidor cambia, quizá porque se reinstaló el servidor o porque un atacante está suplantándolo, SSH rechaza la conexión y muestra una advertencia. Los administradores utilizan la autenticación de hosts basada en certificados para evitar decisiones de confianza TOFU a gran escala.

authorized_keys para iniciar sesión sin contraseña

La autenticación mediante clave pública almacena la clave pública del usuario en ~/.ssh/authorized_keys en el servidor. Cuando el usuario se conecta, el servidor envía un desafío cifrado con la clave pública; solo quien posee la clave privada correspondiente puede responder correctamente y demostrar su identidad sin transmitir la clave privada ni una contraseña. Es más segura que las contraseñas porque las claves privadas nunca se envían por la red y no pueden ser objeto de phishing.

Algoritmos de claves de SSH

Hay tres familias de algoritmos de claves de SSH de uso habitual. Las claves RSA de 3072 o 4096 bits son compatibles con todos los servidores. ECDSA, que utiliza la curva NIST P-256, es más rápido que RSA con un nivel de seguridad equivalente, pero los parámetros de seguridad de P-256 han sido objeto de escrutinio. Ed25519, basado en el algoritmo de firma digital de curva de Edwards, es la recomendación moderna: claves de 256 bits rápidas y pequeñas, propiedades de seguridad sólidas y ausencia de preocupaciones por parámetros especiales.

Historia de SSH: el puerto 22 y Tatu Ylönen

Tatu Ylönen, un investigador finlandés de la Universidad Tecnológica de Helsinki, desarrolló SSH en 1995 después de que un ataque de captura de contraseñas en la red de su universidad expusiera cientos de credenciales. Eligió el puerto 22 porque estaba entre telnet (23) y ftp (21). SSH sustituyó a ambos protocolos inseguros. Ylönen fundó SSH Communications Security y posteriormente publicó SSH-2 como estándar abierto a través de la IETF. OpenSSH, la principal implementación libre, fue creada por el proyecto OpenBSD en 1999.

Seguridad del agente SSH y de la redirección de claves

El agente SSH es un proceso en segundo plano que mantiene las claves privadas descifradas en memoria, lo que permite iniciar sesión una sola vez en varios servidores sin volver a introducir la frase de contraseña. La redirección del agente (opción -A) amplía esta capacidad al redirigir la conexión del agente a servidores remotos, permitiendo acceder en un salto a servidores internos. Sin embargo, la redirección del agente supone un riesgo de seguridad: un servidor remoto comprometido puede utilizar el agente redirigido para autenticarse como usted en otros servidores. Utilice ProxyJump en lugar de la redirección del agente.

Prácticas recomendadas para reforzar SSH

Una configuración segura de SSH incluye deshabilitar el inicio de sesión de root (PermitRootLogin no), deshabilitar la autenticación mediante contraseña (PasswordAuthentication no) en favor del uso exclusivo de claves públicas, utilizar claves de host Ed25519, habilitar únicamente el protocolo SSH-2, configurar tiempos de espera para sesiones inactivas, restringir los usuarios permitidos con AllowUsers o AllowGroups y cambiar el puerto predeterminado como medida de ocultación para reducir el ruido de los escaneos automatizados. Fail2ban o herramientas similares bloquean las IP con repetidos intentos fallidos.

Métodos de autenticación de SSH

¿Por qué se considera que la autenticación de SSH mediante clave pública es más segura que la autenticación mediante contraseña?

SSH: puntos clave

SSH-2 sustituyó al defectuoso SSH-1 mediante capas separadas de transporte, autenticación y conexión. La capa de transporte negocia el cifrado y la integridad. La autenticación de usuarios admite contraseñas, claves públicas y GSSAPI. La verificación de la clave del host utiliza TOFU y known_hosts. Ed25519 es el algoritmo de claves recomendado. La redirección del agente supone un riesgo de seguridad; utilice ProxyJump en su lugar. El refuerzo de la seguridad incluye deshabilitar el inicio de sesión de root y la autenticación mediante contraseña.

Preguntas frecuentes

¿La lección «SSH: protección del acceso remoto» es gratis?

Sí — el texto completo de «SSH: protección del acceso remoto» 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 «SSH: protección del acceso remoto»?

Recorra el handshake de SSH, la autenticación mediante claves de host y la forma en que SSH protege las sesiones remotas. 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 «SSH: protección del acceso remoto»?

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. Qué hace seguro a un protocolo
  2. SSH: protección del acceso remoto
  3. SFTP y SCP: transferencia segura de archivos
  4. DNSSEC: autenticación de respuestas DNS
← Volver a Cryptology Academy