¿Qué es SSH?
Descripción del Secure Shell (SSH) para la administración remota de servidores.
SSH («Secure Shell») es un protocolo de red de la capa de aplicación que permite la administración remota de un sistema operativo y la transferencia segura de archivos. Cifra todo el tráfico — incluidas las contraseñas — lo que lo hace considerablemente más seguro que protocolos más antiguos como Telnet y rlogin. SSH admite una gran variedad de algoritmos de cifrado y está disponible para prácticamente todos los sistemas operativos principales.
SSH puede tunelizar otros protocolos de red a través de un canal inseguro, lo que permite el acceso remoto a la línea de comandos de un equipo, así como la transmisión cifrada de flujos de audio o vídeo. Esto se logra mediante el port forwarding (tunneling TCP). SSH también admite la compresión de datos antes del cifrado, lo que resulta especialmente útil al ejecutar clientes remotos de X Window System sobre conexiones lentas.
Historia y desarrollo de SSH
La primera versión del protocolo, SSH-1, fue creada en 1995 por el investigador finlandés Tatu Ylönen en la Universidad de Tecnología de Helsinki. SSH-1 fue diseñado para ofrecer mayor confidencialidad que rlogin, Telnet y rsh. En 1996 se desarrolló una versión más segura e incompatible con la anterior — SSH-2. El protocolo ganó rápidamente una amplia adopción, alcanzando aproximadamente dos millones de usuarios en el año 2000.
En 2006, el protocolo SSH fue estandarizado por la IETF como estándar de Internet. No obstante, aún hoy algunos países exigen permisos especiales para utilizar determinados métodos de cifrado fuerte, incluidos algunos empleados en SSH.
Las implementaciones modernas (incluida OpenSSH desde ~2017) han eliminado completamente el soporte para SSH-1. Prácticamente todo el uso actual se basa en SSH-2.
Implementaciones de SSH
Existen dos categorías principales de implementaciones SSH: comerciales propietarias y libres de código abierto. La implementación de código abierto más extendida es OpenSSH. A mediados de la década de 2000, ya funcionaba en alrededor del 80% de los ordenadores conectados a Internet; hoy sigue siendo la implementación SSH dominante en todo el mundo (incluida por defecto en casi todas las distribuciones Linux, macOS, y disponible para Windows). La implementación comercial original es desarrollada por SSH Communications Security (anteriormente SSH Inc.) bajo el nombre de producto Tectia SSH (antes SSH Tectia / SSH Secure Shell). Es una solución de pago de nivel empresarial, habitualmente elegida en sectores regulados (banca, administración pública, infraestructuras críticas) por características como la certificación FIPS 140-2/3, opciones de criptografía poscuántica, ediciones zero-trust, gestión centralizada y soporte comercial 24/7. Sigue siendo desarrollada y actualizada activamente en 2025–2026.
Seguridad de SSH
SSH-2 es resistente a los ataques de tipo man-in-the-middle (MITM) — a diferencia de Telnet, donde el sniffing del tráfico lo revela todo. También protege contra el secuestro de sesión (session hijacking) y los ataques de DNS spoofing cuando está correctamente configurado.
Recomendaciones actuales (2025–2026):
- Usar claves Ed25519 o ECDSA en lugar del antiguo RSA-SHA1.
- Preferir rsa-sha2-256/512 para las claves RSA.
- Deshabilitar algoritmos débiles u obsoletos (p. ej., SHA-1, DSA, métodos de intercambio de claves antiguos).
- Habilitar el intercambio de claves híbrido poscuántico donde esté disponible.
Ejemplos de uso de SSH
- Conexión a un servidor SSH local en un puerto no estándar:
$ ssh -p 30000 user@127.0.0.1 - Generación de un par de claves RSA robustas de 4096 bits:
$ puttygen -t rsa -b 4096 -o sample
Guías más detalladas sobre la conexión mediante SSH:
- Conexión a un VPS o servidor dedicado mediante SSH en Windows
- Conexión a un VPS o servidor dedicado mediante SSH en macOS
- Configuración de la autenticación por clave SSH en el servidor
Algunos clientes, como PuTTY, ofrecen una interfaz gráfica de usuario.
Para el uso de SSH en Python, las bibliotecas más populares son python-paramiko y python-twisted-conch.
Recomendaciones de seguridad
- Deshabilitar el acceso root remoto (PermitRootLogin no).
- Prohibir las contraseñas vacías.
- Cambiar el puerto del servidor SSH del valor predeterminado 22 a uno no estándar.
- Utilizar tipos de clave modernos y robustos (preferiblemente Ed25519, o como mínimo RSA de 4096 bits con SHA-2).
- Considerar la autenticación basada en certificados o la autenticación multifactor para entornos de alta seguridad.
Referencias
Estándares
Software de acceso terminal
- OpenSSH — la principal suite SSH libre
- PuTTY — popular cliente SSH multiplataforma con interfaz gráfica
- Tectia SSH — solución SSH empresarial/comercial