SSH: qué es y cómo funciona este protocolo
En Internet existen diversos protocolos de internet para acceder a sus distintos servicios y características. Sin duda, el protocolo HTTP es el más conocido, porque es el que nos permite realizar conexiones para recibir páginas web profesionales, pero hay muchos otros protocolos que también son esenciales para el funcionamiento de la Red.
En este artículo, te explicaremos qué es el protocolo SSH que usamos para conectarnos de manera segura para la administración de servidores.
¿Qué es un protocolo de red?
Los protocolos de red, como su propio nombre indica, establecen de manera detallada el proceso que deben seguir los sistemas informáticos para realizar conexiones y transferencias de información. Gracias a estos protocolos los sistemas involucrados en una comunicación son capaces de entenderse y proporcionar una interfaz homogénea para el acceso a un tipo de servicio.
Los protocolos de Internet son diversos. HTTP es el que usan los navegadores para conectarse con servidores web y recibir información de las páginas. Además, como HTTP es un protocolo tan extendido, muchos otros sistemas se apoyan en él para realizar comunicaciones, como los servicios web o diversos programas de mensajería. Pero existen otros protocolos importantes como IMAP, POP y SMTP que permiten trabajar con el correo electrónico, o FTP para la transferencia de archivos.
¿Qué es el protocolo SSH?
SSH son las siglas de Secure Shell y es un protocolo de red destinado principalmente a la conexión con máquinas a las que accedemos por línea de comandos. En otras palabras, con SSH podemos conectarnos con servidores usando la red Internet como vía para las comunicaciones. Esto es algo en lo que profundizamos en Comandos básicos para administrar servidores Linux por SSH.
Su característica más importante es que siempre se realiza de manera segura. Gracias a SSH, la información que viaja por la Red no es legible por terceras personas y, para ello, todo el tránsito de la información se realiza encriptando los datos. Esto es importante para garantizar que el tráfico de datos se realice siempre de manera confidencial y que nadie sea capaz de escuchar el canal de comunicaciones para robar información o claves de acceso a los servidores.
El puerto predeterminado para las conexiones SSH es el 22.
¿Cómo funciona SSH?
El protocolo SSH utiliza una arquitectura cliente-servidor para establecer conexiones seguras. Aquí hay un resumen de cómo funciona:
- Cliente SSH: Es la aplicación que utilizas para conectarte a un servidor remoto. Puedes utilizar diferentes clientes SSH, como OpenSSH en sistemas Linux o PuTTY en Windows.
- Servidor SSH: Se ejecuta en el servidor remoto al que deseas acceder. Este servidor está configurado para aceptar conexiones SSH y autenticar a los usuarios.
- Autenticación: Cuando intentas conectarte a un servidor remoto, el cliente SSH y el servidor SSH inician un proceso de autenticación. Esto generalmente implica el uso de un nombre de usuario y una contraseña (o una clave SSH). La clave SSH es una forma más segura de autenticación y se recomienda encarecidamente su uso.
¿Para qué se utiliza SSH?
Debido a su seguridad, SSH es el modo preferido para la realización de conexión con servidores que necesitamos administrar. La diferencia con respecto a otros protocolos más antiguos como Telnet es que el protocolo SSH siempre es seguro.
Sin embargo, aprovechando la seguridad de las comunicaciones, también se utiliza para otros objetivos como:
- Transferencia de Archivos Segura: Permite transferir archivos de forma segura entre sistemas locales y remotos utilizando herramientas como el comando SCP o SFTP.
- Creación de Túneles de Red: SSH se utiliza para crear túneles de datos seguros que redirigen el tráfico de red a través de conexiones SSH, lo que puede ayudar a proteger la comunicación en redes no seguras. Se usan en sistemas como Ngrok, un software que permite a los desarrolladores exponer de manera remota los trabajos, tal como los tienen funcionando en su servidor de desarrollo local.
Técnicas de cifrado SSH
El protocolo SSH utiliza diferentes técnicas de seguridad para proteger sus conexiones.
Cifrado Simétrico
El cifrado simétrico es una técnica en la que se utiliza la misma clave tanto para cifrar como para descifrar los datos entre el cliente y el servidor, lo que garantiza su seguridad y confidencialidad.
Cifrado Asimétrico
En cambio, el cifrado asimétrico utiliza dos claves: una pública y otra privada; en otras palabras, se hace uso de una clave para el cifrado y otra para el descifrado, verificando así la identidad tanto del cliente como la del servidor.
Cuando un cliente se conecta a un servidor, utiliza la clave pública del servidor para cifrar un mensaje que sólo puede descifrarse con la clave privada correspondiente.
Hashing
El hashing es una técnica que se utiliza para verificar la integridad de los datos transmitidos. El algoritmo toma un conjunto de datos y genera un valor hash único, que es una representación de los datos originales.
Este valor se envía junto con los datos a través de la conexión SSH. En el extremo receptor, los datos se vuelven a calcular y se genera un nuevo valor hash.
- Si coincide con el recibido, se confirma que los datos no se han modificado.
- Si no coincide, los datos podrían haber sido alterados y se considera una posible amenaza de seguridad.
¿Cómo conectarse por SSH con servidores remotos?
Para la realización de conexiones seguras con SSH usamos el propio programa de terminal de línea de comandos que dispongamos en nuestro ordenador local. En Windows, generalmente se recomienda el uso de terminales modernos como Windows Terminal o PowerShell, entre otros.
El comando para realizar la conexión para la administración remota de servidores se llama igual que el mismo protocolo: SSH. Para usar este comando necesitamos indicar tanto el usuario como la dirección IP o el nombre del host del servidor al que deseamos conectarnos.
ssh root@1.2.3.4
Una vez lanzado ese comando, se solicitará la clave del usuario que estamos usando para hacer el inicio de sesión en el servidor, en este caso root.
De manera adicional, en las conexiones podemos usar llaves SSH que nos permiten acceder sin necesidad de proporcionar una clave. En lugar de la clave, se proporciona el nombre de la llave que queremos usar para la autorización.
ssh root@1.1.1.1 -i llave-ssh
Por supuesto, necesitamos disponer de un servidor que tenga configurado el acceso mediante la llave. También puedes aprender más sobre cómo crear claves SSH y el acceso a servidores.
Conclusiones sobre el protocolo SSH
En resumen, SSH es una herramienta esencial que permite a los administradores gestionar sistemas de forma remota, transferir archivos de manera segura y realizar tareas de mantenimiento, lo que es esencial en el ámbito de la administración de servidores.
Además, su relevancia se extiende hasta la gestión de dominios y el hosting web, ya que ofrece a los administradores la capacidad de configurar servidores de alojamiento, manejar bases de datos y garantizar la seguridad al crear una página web.