Protocolo SSH: uso, versiones e implementaciones

Protocolo SSH Secure Shell

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

  1. 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.
  2. 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.

Cliente y servidor SSH

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 SSHDesarrolladorPublicaciónÚltima publicaciónVersión actualLicencia
SecureCRTVanDyke SoftwareJunio de 1998Septiembre de 20219.1Software propietario
OpenSSHThe OpenBSD projectDiciembre de 1999Agosto de 20218.7BSD
ZOC TerminalEmTec, Innovative SoftwareJulio de 1995Agosto de 20218.02.7Software propietario
PuTTYSimon TathamEnero de 1999Julio de 20210.76MIT
wolfSSHwolfSSLJulio de 2016Julio de 20211.4.7GPLv3 y software propietario
Bitvise SSH ClientBitvise Limited2001Julio de 20218.49Software propietario
Tera TermTeraTerm Project2004Junio de 20214.106BSD
TtyEmulatorFCS SoftwareMayo de 2002Marzo de 20214.6.0.0Software propietario
DropbearMatt JohnstonAbril de 2003Octubre de 20202020.81MIT

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 SSHDesarrolladorPublicaciónÚltima publicaciónVersión actualLicencia
OpenSSHThe OpenBSD projectDiciembre de 1999Agosto de 20218.7BSD
Bitvise SSH ServerBitvise Limited2001Julio de 20218.49Software propietario
wolfSSHwolfSSLJulio de 2016Julio de 20211.4.7GPLv3 y software propietario
Apache MINA SSHDApache Software Foundation2009Mayo de 20212.7.0Apache 2.0
CopSSHItefixAgosto de 2003Marzo de 20217.5.0Software propietario
CrushFTP ServerCrushFTP, LLCEnero de 2003Febrero de 202110.0.0Software propietario
TeleportGravitationalJunio de 2016Mayo de 20216.2Apache 2.0
DropbearMatt JohnstonAbril de 2003Octubre de 20202020.81MIT

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.

Si te ha gustado, compártelo en redes sociales