SSH significa “Secure Shell” (o “Shell Seguro” en español). Es un protocolo de red utilizado para acceder y gestionar de forma segura dispositivos y servidores a través de una red no segura. Proporciona una forma certera de autenticación, así como una comunicación cifrada entre dos sistemas, lo que lo hace especialmente útil en entornos donde la seguridad es una preocupación.
SSH se utiliza comúnmente para acceder a servidores remotos a través de una interfaz de línea de comandos, pero también puede ser utilizado para transferir archivos de forma segura (a través de SFTP o SCP). Utiliza técnicas de cifrado para proteger la información transmitida, lo que hace que sea difícil para terceros interceptar o manipular los datos durante la transmisión.
Una de las principales ventajas de SSH es su capacidad para autenticar tanto al cliente como al servidor, lo que ayuda a prevenir ataques de tipo “man in the middle” y otras amenazas de seguridad. SSH reemplaza métodos más antiguos y menos seguros de acceso remoto, como Telnet, que transmite información de manera no cifrada, lo que hace que sea susceptible a la interceptación y el robo de datos.
SSH es un protocolo independiente del sistema operativo, aunque fue concebido para entornos Unix, está presente en sistemas operativos como OSX (Mac) y en las últimas versiones de servidores Microsoft Windows. SSH es, de facto, el estándar de conexión a servidores por línea de comandos.
Utiliza el puerto 22/TCP, pero se puede configurar para escuchar y conectarse por puertos diferentes. De hecho, se considera una buena práctica de seguridad cambiar el puerto por defecto de escucha para evitar ser identificado por herramientas de escaneo remoto.
Un breve repaso a la historia de SSH y OpenSSH
La trayectoria de OpenSSH se remonta al año 1999 y se encuentra estrechamente vinculada con el software original denominado “SSH” (Secure Shell), creado por Tatu Ylönen en 1995. SSH es un protocolo de red que permite la conexión segura y el control remoto de un sistema a través de una interfaz de línea de comandos.
En sus primeros días, SSH era software propietario y aunque estaba disponible de forma gratuita para uso no comercial, requería licencias para su uso en entornos comerciales. Esto llevó a la creación de varias implementaciones de SSH de código abierto para llenar la brecha en términos de accesibilidad y licencias de software.
En este contexto, el proyecto OpenSSH fue iniciado por Markus Friedl, Niels Provos, Theo de Raadt, y Dug Song en diciembre de 1999. La creación de OpenSSH se llevó a cabo en respuesta a una serie de eventos que incluyeron la liberación del código fuente del protocolo SSH por parte de Tatu Ylönen y la preocupación sobre la propiedad y las licencias del software propietario existente.
El objetivo inicial del proyecto OpenSSH era crear un protocolo gratuito y de código abierto que fuera compatible con las versiones existentes, especialmente con SSH-1 y SSH-2. OpenSSH también buscaba evitar las restricciones de licencia asociadas con las implementaciones propietarias de SSH.
A medida que el proyecto avanzaba, se convirtió en la implementación de facto de SSH en sistemas basados en Unix y Linux. La creciente popularidad de OpenSSH se debió a su código abierto, su capacidad para proporcionar una comunicación segura y sus características como el cifrado fuerte, la autenticación basada en clave y la capacidad de transferencia de archivos segura (SFTP).
OpenSSH también se benefició de la colaboración con la comunidad de software libre y de código abierto. A lo largo de los años, ha experimentado mejoras continuas, actualizaciones de seguridad y extensiones funcionales, lo que lo convierte en una herramienta esencial en la administración de sistemas remotos y la seguridad de la red.
En resumen, OpenSSH surgió como una respuesta a la necesidad de una implementación de SSH de código abierto y gratuita. A lo largo de los años, ha evolucionado para convertirse en la implementación de SSH más utilizada en sistemas Unix y Linux y sigue siendo fundamental en la seguridad de la comunicación y administración de sistemas en entornos distribuidos.
Ejecución de comandos remota con SSH
SSH no solo provee una forma de acceder de manera interactiva a la shell de una máquina remota, también se puede utilizar para ejecutar comandos remotos en un sistema, con la sintaxis siguiente:
ssh usuario@host:/ruta/del/comando
SSH se utiliza frecuentemente en scripts para la automatización de todo tipo de acciones y procesos, para ello necesita la autenticación automática por medio de certificados, ya que, por defecto, requerirá la introducción de una contraseña de manera manual e interactiva por el usuario a través del teclado.
La seguridad en SSH
SSH es acrónimo de Secure Shell, así que la seguridad es parte del diseño fundacional de SSH.
SSH tiene además la capacidad de crear túneles TCP que permiten utilizar un host para crear una especie de VPN dedicada entre dos IP que puede ser bidireccional. Es lo que se conoce como “Túnel TCP” y que mal usado, puede ser un problema de seguridad.
SSH permite la autenticación automática a través de certificados, lo que permite que un usuario se pueda conectar a un sistema mediante SSH sin conocer el password. Para ello hay que copiar la clave pública de un certificado digital en el servidor, de manera que identificamos a ese usuario a través de su certificado. Esta es una opción avanzada que permite la automatización de ejecución de comandos vía SSH, pero que presenta riesgos inherentes a cualquier automatización.
¿Qué diferencias hay entre Telnet y SSH?
SSH y Telnet son dos protocolos de red utilizados para acceder a sistemas remotos, pero hay diferencias significativas en términos de seguridad y funcionalidad.
SSH es el estándar actual para acceso remoto en todo tipo de entornos. Telnet, por otro lado, es más antiguo y menos seguro, y su uso se desaconseja a no ser que sea imposible usar SSH.
Seguridad
SSH: Proporciona un entorno seguro para la comunicación entre dos sistemas. Todos los datos, incluidos nombres de usuario y contraseñas, se cifran antes de ser transmitidos, lo que hace que sea mucho más difícil para un atacante interceptar y entender la información transmitida.
Telnet: Transmite datos, incluyendo credenciales de inicio de sesión, de forma no cifrada. Esto significa que si alguien tiene acceso a la red entre el cliente y el servidor, puede capturar y leer fácilmente la información.
Cifrado
SSH: Utiliza cifrado para proteger los datos durante la transmisión. Los algoritmos de cifrado en SSH pueden configurarse para cumplir con los estándares de seguridad más recientes.
Telnet: No proporciona cifrado, lo que significa que toda la información, incluidas las contraseñas, se transmiten de manera no segura.
Autenticación
SSH: Admite diversos métodos de autenticación, incluyendo la utilización de contraseñas, clave pública, y autenticación basada en tokens.
Telnet: Dependiendo de la configuración, generalmente utiliza solo nombres de usuario y contraseñas para la autenticación.
Puertos
SSH por defecto. SSH utiliza el puerto 22, a diferencia de Telnet que usa el puerto 23. No obstante, estos puertos se pueden cambiar en cualquier momento.
Mejores clientes de SSH
A continuación se enumeran algunos de los clientes de SSH más conocidos del mercado.
OpenSSH
OpenSSH (Linux, macOS, Windows con WSL) y otros sistemas operativos como BSD o dispositivos de comunicaciones que soportan una versión de OpenSSH.
OpenSSH es una implementación gratuita y de código abierto del protocolo SSH. Viene preinstalado en la mayoría de las distribuciones de Linux y es ampliamente utilizado en entornos Unix.
Es altamente confiable, seguro y es la elección predeterminada en muchos sistemas operativos basados en Unix, además de ser 100 % gratuito.
Putty
PuTTY es un cliente SSH gratuito y de código abierto para Windows y por ello, muy popular. Aunque inicialmente se diseñó para Windows, también existe una versión no oficial llamada “PuTTY for Mac” que funciona en macOS, también existen versiones alternativas para Linux.
Es liviano, fácil de usar y se puede ejecutar como una aplicación portátil sin necesidad de instalación. Sin embargo, adolece de una interfaz potente, no permite grabación de secuencias, y en general, carece de funcionalidades más avanzadas que podemos encontrar en otros clientes “visuales” de SSH. Tampoco dispone de una interfaz específica para transferencia de archivos.
De todas las opciones, PuTTY es la más básica, pero al menos es una interfaz visual, a diferencia del cliente estándar de SSH del sistema operativo que es gratis, pero donde todas las “funcionalidades” están basadas en líneas de comando.
Descargas y actualizaciones
Se puede descargar desde su web, aunque existen diversos sitios en paralelo que ofrecen versiones alternativas para Mac e incluso Linux.
Precio y licencias
Es gratuito y bajo licencia OpenSource por lo que puede modificar su código y compilarlo por su cuenta.
BitVise
Bitvise SSH Client es una opción sólida para usuarios de Windows que buscan un cliente SSH fácil de usar y seguro. Su combinación de una interfaz intuitiva, funciones avanzadas de transferencia de archivos y seguridad robusta lo convierte en una herramienta apreciada para la administración de sistemas remotos y la transferencia de archivos segura.
Servidor SSH
BitVise ofrece tanto un cliente SSH como un servidor SSH. Generalmente, los sistemas Windows no utilizan SSH por lo que puede ser una muy buena opción para implementarlo, pese a que las últimas versiones de Microsoft Windows Server lo implementan ya. Es una opción excelente para implementar SSH en versiones antiguas de Windows, ya que, soporta una amplia selección de versiones, prácticamente desde Windows XP:
- Windows Server 2022
- Windows 11
- Windows Server 2019
- Windows Server 2016
- Windows 10
- Windows Server 2012 R2
- Windows Server 2012
- Windows 8.1
- Windows Server 2008 R2
- Windows Server 2008
- Windows Vista SP1 or SP2
- Windows Server 2003 R2
- Windows Server 2003
- Windows XP SP3
Túneles SSH y reenvío de puertos
Permite la configuración de túneles SSH y reenvío de puertos, lo que es útil para redirigir tráfico de red de manera segura a través de conexiones SSH.
Gestión de sesiones avanzada
Bitvise SSH Client ofrece opciones avanzadas para la gestión de sesiones, incluyendo la capacidad de guardar configuraciones de sesión para un acceso rápido y fácil a servidores frecuentemente utilizados.
Registro de sesiones y auditoría
Proporciona un registro detallado de las sesiones, lo que puede ser útil para fines de auditoría y seguimiento de actividades.
Compatibilidad con proxy:
Bitvise SSH Client es compatible con varios tipos de proxy, lo que permite a los usuarios sortear restricciones de red y conectarse a través de servidores proxy.
Descargas y actualizaciones.
Se puede descargar una versión de evaluación de 30 días desde su web https://www.bitvise.com.
Licencias y precio
Solo para Windows, su precio ronda los 120 USD por año.
SecureCRT
Está disponible para todas las plataformas: Windows, macOS y Linux. Se puede descargar una demo funcional desde su página web en https://www.vandyke.com.
SecureCRT es un cliente comercial que ofrece soporte para múltiples protocolos, incluido SSH. Proporciona una interfaz gráfica avanzada, funciones de script y automatización, y es ampliamente utilizado en entornos empresariales.
Emulación de terminal
Ofrece emulación de terminal para una amplia variedad de tipos, incluyendo VT100, VT102, VT220, ANSI, entre otros. Esto asegura una compatibilidad efectiva con diversos sistemas y dispositivos remotos.
Transferencia de archivos segura
SecureCRT incluye soporte para protocolos de transferencia de archivos seguros, como SCP (Secure Copy Protocol) y SFTP (Secure File Transfer Protocol). Esto permite a los usuarios transferir archivos de manera segura entre sistemas locales y remotos. Para la gestión de transferencias de archivos utiliza un producto adicional llamado SecureFX (con coste de licencia adicional).
Automatización y secuencias de comandos
Facilita la automatización de tareas mediante la ejecución de secuencias de comandos. Admite varios lenguajes de secuencias de comandos, como VBScript, JScript y Python, proporcionando flexibilidad en la automatización de procesos.
Gestión de sesiones eficiente
SecureCRT ofrece una interfaz de gestión de sesiones eficiente que permite a los usuarios organizar y acceder fácilmente a conexiones previas. También posibilita la importación y exportación de sesiones para una fácil transferencia de configuraciones entre sistemas. Permite la configuración avanzada de sesiones, incluyendo opciones de autenticación, configuración de teclas de función, reenvío de puertos, entre otros. Esto ofrece a los usuarios un control preciso sobre sus sesiones remotas.
Integración de claves SSH
SecureCRT es compatible con la autenticación basada en clave, lo que significa que los usuarios pueden gestionar y utilizar claves SSH para una autenticación segura sin depender de contraseñas.
Soporte para protocolos adicionales:
Además de SSH, SecureCRT también es compatible con otros protocolos como Telnet, rlogin y Serial. Esto lo convierte en una herramienta versátil para diversos entornos de red.
Precio y licencias
Una versión completa para un usuario, incluyendo las funcionalidades de transferencia segura (SecureFX) viene a salir por unos 120$ al año.
ZOC
ZOC Terminal es un cliente SSH y emulador de terminal que ofrece características avanzadas para usuarios que necesitan una herramienta potente y versátil para trabajar con conexiones remotas SSH. También es compatible con otros protocolos como Telnet y Rlogin, lo que amplía su utilidad en diversos entornos no solo como cliente SSH sino como cliente Telnet.
ZOC es compatible con Windows y macOS y publica versiones actualizadas de manera regular. Puede descargarse una versión de demo desde su web en https://www.emtec.com.
Funciones de emulación de terminal
ZOC es compatible con múltiples emulaciones de terminal, como xterm, VT220, TN3270, y más. Esto permite a los usuarios conectarse a una variedad de sistemas remotos y mainframes.
Transferencia de archivos
Incluye funcionalidades de transferencia de archivos seguras (e inseguras), como FTP, SFTP (SSH File Transfer Protocol) y SCP (Secure Copy Protocol), permitiendo a los usuarios transferir archivos de manera segura entre el sistema local y remoto. La funcionalidad está incluida en el mismo producto.
Automatización y secuencias de comandos:
ZOC facilita la automatización de tareas mediante la ejecución de secuencias de comandos. Admite varios lenguajes de secuencias de comandos, como VBScript, JScript, y Python, lo que proporciona flexibilidad para la automatización de procesos. También permite grabar una combinación de teclas y reproducirla para, por ejemplo, automatizar sesiones de login que requieran el uso de sudo o su.
Gestión de sesiones
La capacidad de gestionar y organizar sesiones es crucial para aquellos que trabajan con múltiples conexiones. ZOC ofrece una interfaz de gestión de sesiones intuitiva que permite organizar y acceder fácilmente a conexiones previas. Se puede tener un catálogo de sistemas donde conectarse fácilmente.
Precio y licencias
La licencia básica ronda los 80 USD, pero su versión gratuita permite trabajar cómodamente, si exceptuamos el algo molesto popup del inicio.
Pandora RC: Alternativa al uso de SSH
Pandora RC (antes llamado eHorus) es un sistema de gestión de equipos para Microsoft Windows®, Linux® y Mac OS® que permite acceder a ordenadores registrados allí donde estén, desde un navegador, sin que tenga conectividad directa a sus dispositivos desde el exterior.
Seguridad
Para mayor seguridad, cada agente, al configurarlo, puede tener una contraseña individual que no se almacena en los servidores centrales de Pandora RC, sino que cada vez que el usuario quiera acceder a dicha máquina, tendrá que introducir de forma interactiva.
Acceso remoto sin conexión directa
Uno de los problemas más habituales de SSH es que necesitamos poder acceder a la IP del servidor. Con Pandora RC, es el servidor quien se conecta a un servicio en la nube y así está disponible desde cualquier lugar, sin necesidad de una VPN o reglas complejas en los firewalls.
Integración con Pandora FMS
Se integra nativamente con el software de monitorización Pandora FMS, de manera que es posible no solo monitorizar los servidores, sino acceder a ellos directamente desde la misma interfaz, sin necesidad de instalar clientes ssh, recordar contraseñas o generar duplicidades.
Precio y licencia
Gratuito hasta 5 dispositivos. Existen licencias de uso para ilimitadas máquinas a partir de 19€/mes. Más información en la web: https://pandorafms.com/en/remote-control/prices/
Shell remota y escritorio remoto todo en uno
Pandora RC dispone de un sistema de control remoto a través de acceso al Escritorio de manera visual. En ambos casos se utiliza una interfaz web para operar con el servidor remoto, sea Windows, MacOS o Linux. También provee un mecanismo de transferencia de archivos y gestión de procesos/servicios. Todo integrado en una aplicación WEB:
Ejemplo de Shell remota en un sistema Mac:
Ejemplo de un escritorio remoto en un sistema Mac:
Ejemplo de una compartición de archivos en un sistema Linux:
Sancho es el creador y fundador de Pandora FMS. Entre sus muchas aficiones además de la tecnología e internet en general, está la lectura, tocar la guitarra y los deportes como la esgrima o el boxeo. En su blog personal se atreve a escribir sobre temas de empresa y tecnología cuando tiene tiempo, que suele ser casi nunca.