SSH o Secure Shell es un protocolo de red y de administración remota; diseñado originalmente para reemplazar a Telnet y otros protocolos no seguros como Berkeley Remote Shell (rsh). SSH permite proteger la administración de sistemas y la transferencia de archivos remotas en una red no segura. En este artículo hablaremos del protocolo SSH y sus versiones, clientes y servidores SSH, implementaciones, usos, etc.
¿Qué es el protocolo SSH y para qué se usa?
El protocolo SSH se usa para proteger servicios de red en una red no segura. Actualmente se usa en casi todos los centros de datos. Secure Shell utiliza una arquitectura cliente-servidor para proporcionar un canal seguro dentro de una red no segura. Según lo define la Internet Society en el documento que presenta la arquitectura del protocolo Secure Shell (SSH):
«El protocolo Secure Shell (SSH) es un protocolo para proteger el login remoto y otros servicios de red seguros en una red no segura.»
Este protocolo de red criptográfico se usa para proteger todo tipo de servicios de red. Este utiliza la encriptación para proteger la conexión entre el cliente y el servidor SSH; lo cual protege frente a ataques en la red. SSH permite acceder a líneas de comandos, ejecutar comandos, iniciar sesión y realizar tareas de sysadmin de forma remota y segura. Además, el protocolo SSH también se usa en diversos mecanismos de transferencia de archivos. Por ejemplo:
- SFTP (SSH File Transfer Protocol; una alternativa segura a FTP).
- FASP (Fast and Secure Protocol).
- SCP (Secure copy).
La encriptación del protocolo tiene como objetivo proporcionar una fuerte integridad y confidencialidad de la información. SSH utiliza criptografía de clave pública para su mecanismo de autenticación —conocido como “autenticación de clave pública”—. Además, también es compatible con la autenticación basada en contraseñas.
Principales métodos para usar SSH
- Usar pares de claves pública/privada generados automáticamente para encriptar una conexión de red e iniciar sesión usando una contraseña.
- Usar pares de claves pública/privada generados manualmente para realizar la autenticación. De este modo los usuarios y los programas pueden iniciar sesión sin usar contraseña.
Antes de ser validadas, las claves públicas desconocidas siempre deben verificarse en todas las versiones de SSH; para evitar autorizar como usuario válido a un atacante no autorizado.
SSH y cloud computing
En cloud computing, SSH es útil para resolver problemas de conectividad y evitar problemas de seguridad. Un túnel SSH puede proporcionar una ruta segura en Internet, a través de un firewall, evitando la exposición de las máquinas virtuales directamente en Internet.
Clientes SSH
Un cliente SSH es un software que usa el protocolo Secure Shell para conectarse a un ordenador remoto.
Ejemplos de clientes SSH
Estos son algunos ejemplos de clientes SSH:
Cliente SSH | Desarrollador | Publicación | Última publicación | Versión actual | Licencia |
---|---|---|---|---|---|
SecureCRT | VanDyke Software | Junio de 1998 | Septiembre de 2021 | 9.1 | Software propietario |
OpenSSH | The OpenBSD project | Diciembre de 1999 | Agosto de 2021 | 8.7 | BSD |
ZOC Terminal | EmTec, Innovative Software | Julio de 1995 | Agosto de 2021 | 8.02.7 | Software propietario |
PuTTY | Simon Tatham | Enero de 1999 | Julio de 2021 | 0.76 | MIT |
wolfSSH | wolfSSL | Julio de 2016 | Julio de 2021 | 1.4.7 | GPLv3 y software propietario |
Bitvise SSH Client | Bitvise Limited | 2001 | Julio de 2021 | 8.49 | Software propietario |
Tera Term | TeraTerm Project | 2004 | Junio de 2021 | 4.106 | BSD |
TtyEmulator | FCS Software | Mayo de 2002 | Marzo de 2021 | 4.6.0.0 | Software propietario |
Dropbear | Matt Johnston | Abril de 2003 | Octubre de 2020 | 2020.81 | MIT |
Para ver más ejemplos y detalles sobre los clientes SSH que existen actualmente puedes visitar la comparación de clientes SSH (en inglés) de Wikipedia.
Servidores SSH
Un servidor SSH es un software que utiliza el protocolo Secure Shell para aceptar conexiones desde ordenadores remotos.
Ejemplos de servidores SSH
Estos son algunos ejemplos de servidores SSH:
Servidor SSH | Desarrollador | Publicación | Última publicación | Versión actual | Licencia |
---|---|---|---|---|---|
OpenSSH | The OpenBSD project | Diciembre de 1999 | Agosto de 2021 | 8.7 | BSD |
Bitvise SSH Server | Bitvise Limited | 2001 | Julio de 2021 | 8.49 | Software propietario |
wolfSSH | wolfSSL | Julio de 2016 | Julio de 2021 | 1.4.7 | GPLv3 y software propietario |
Apache MINA SSHD | Apache Software Foundation | 2009 | Mayo de 2021 | 2.7.0 | Apache 2.0 |
CopSSH | Itefix | Agosto de 2003 | Marzo de 2021 | 7.5.0 | Software propietario |
CrushFTP Server | CrushFTP, LLC | Enero de 2003 | Febrero de 2021 | 10.0.0 | Software propietario |
Teleport | Gravitational | Junio de 2016 | Mayo de 2021 | 6.2 | Apache 2.0 |
Dropbear | Matt Johnston | Abril de 2003 | Octubre de 2020 | 2020.81 | MIT |
Para ver más ejemplos y detalles sobre los servidores SSH que existen actualmente puedes visitar la comparación de servidores SSH (en inglés) de Wikipedia.
Versiones de SSH
La especificación del protocolo SSH incluye dos versiones principales: SSH-1 y SSH-2. También cabe mencionar la versión SSH 1.99, aunque no es una versión como tal.
SSH-1
La primera versión del protocolo SSH fue la SSH-1. SSH-1 fue diseñada por el investigador finlandés de la Universidad Politécnica de Helsinki, Tatu Ylönen, en julio de 1995. Tatu Ylönen decidió crear esta primera versión del protocolo SSH tras un ataque de sniffing de contraseñas a la red de su universidad. Su objetivo era proporcionar una autenticación y confidencialidad sólidas, al contrario de lo que ofrecían los protocolos ya existentes —rlogin, Telnet, FTP y rsh—.
SSH-1 se publicó como un freeware y rápidamente ganó popularidad. Como resultado, a finales de 1995, el investigador fundó SSH Communications Security para seguir desarrollando y vender SSH. De modo que, mientras la versión original estaba compuesta principalmente por software libre, las versiones posteriores incluían cada vez más software propietario.
SSH-2
SSH-2 es la segunda versión del protocolo SSH. Su desarrollo lo llevó a cabo un grupo de trabajo llamado de forma oficial por la IETF (Internet Engineering Task Force), «Secsh». La versión 2 del protocolo Secure Shell se adoptó como estándar en 2006 y es incompatible con la versión precedente, SSH-1. SSH-2 incluye nuevas características y mejoras de seguridad, como: la verificación de la integridad mediante códigos de autenticación de mensaje y la capacidad de ejecutar cualquier número de sesiones shell en una única conexión SSH.
SSH 1.99
Según la especificación RFC 4253, los servidores SSH que sean compatibles tanto con SSH-1 como con SSH-2 deben identificar su protoversión como SSH 1.99, para identificar la retrocompatibilidad.
Implementaciones populares de SSH
OpenSSH, PuTTY y Tectia SSH son algunas de las implementaciones de SSH más populares. Aunque, como se muestra en las tablas de servidores y clientes SSH más arriba, hay muchas opciones disponibles.
OpenSSH, abreviatura de OpenBSD Secure Shell, destaca entre las implementaciones de código abierto del protocolo SSH. Es una suite de aplicaciones de red seguras basada en el protocolo SSH. Además, como curiosidad, con la implementación cliente-servidor de OpenSSH, el protocolo SSH se puede usar para implementar una VPN.