Protocolo SSH: ¿Qué es? ¿Cómo funciona?

Protocolo SSH: ¿Qué es? ¿Cómo funciona?

Leer 11 minutos

SSH se utiliza ampliamente para gestionar infraestructuras de red, transferir archivos y emitir comandos remotos. En este artículo explicaremos qué es el protocolo SSH, cómo funciona y por qué es importante.

¿Qué es SSH?

SSH significa Secure Shell, lo que implica que proporciona un shell (una interfaz de línea de comandos) que es seguro (cifrado y autenticado). SSH también puede hacer otras cosas, como enviar archivos, ejecutar programas o cambiar la configuración de otro ordenador.

Secure Shell es un conjunto de reglas que indica a los ordenadores cómo comunicarse entre sí de forma segura. Consta de tres componentes principales: la capa de transporte, la capa de autenticación de usuario y la capa de conexión. La parte de transporte garantiza que los ordenadores puedan confiar entre sí y que nadie pueda espiarlos o cambiar sus mensajes. La parte de usuario garantiza que sólo la persona adecuada pueda acceder al otro ordenador. La capa de conexión garantiza que los ordenadores puedan hacer diferentes cosas al mismo tiempo, como escribir comandos, enviar archivos o abrir programas.

El protocolo SSH protege contra varios ataques, como la escucha, la manipulación, la suplantación de identidad o los ataques man-in-the-middle. Secure Shell también permite a los usuarios realizar varias tareas de forma remota sin exponer sus contraseñas o datos a hackers o actores maliciosos.

Transfiere cualquier tipo de datos a través del canal cifrado, siempre que tanto el cliente como el servidor soporten el mismo protocolo. Por ejemplo, SSH puede transferir archivos de texto, binarios, de audio, vídeo o imagen mediante SCP o SFTP. También puede enviar otros tipos de datos, como gráficos, puertos TCP/IP o sockets utilizando el reenvío de puertos o el tunelado.

Una de las características más útiles de SSH es su capacidad para crear túneles o proxies. Esta característica permite a los usuarios reenviar o redirigir el tráfico de red de un puerto o dirección a otro puerto o dirección a través de Secure Shell. Esto puede ser útil para eludir cortafuegos, acceder a recursos restringidos, cifrar protocolos no seguros u ocultar la actividad de la red.

¿Cuál es la historia del protocolo SSH?

El protocolo de inicio de sesión seguro fue creado en 1995 por el informático finlandés Tatu Ylönen. Quería crear una forma mejor de conectarse a otros ordenadores que las antiguas, que no eran seguras y podían piratearse fácilmente. Publicó la primera versión de SSH (SSH-1) como software libre bajo una licencia de código abierto. Más tarde, fundó una empresa para desarrollar y comercializar productos SSH.

Al principio, SSH se llamaba Secure Remote Login (SRL), pero se cambió a Secure Shell (SSH) porque SRL ya era utilizado por otro programa. Otro dato curioso es que SSH se inspiró en una película de James Bond llamada GoldenEye, en la que un hacker utiliza una herramienta similar para entrar en un sistema de control de satélites.

En 1996, un grupo de desarrolladores dirigido por Björn Grönvall empezó a trabajar en una implementación libre de SSH llamada OpenSSH, basada en el código fuente de una versión anterior de Secure Shell. OpenSSH se publicó en 1999 como parte del sistema operativo OpenBSD y pronto se convirtió en la implementación más popular de SSH. OpenSSH añadió muchas funciones y mejoras a SSH, como la compatibilidad con SSH-2 (una versión revisada del protocolo con mayor seguridad y funcionalidad), el reenvío X11, el reenvío de agentes y la compatibilidad con IPv6.

En 2006, el Grupo de Trabajo de Ingeniería de Internet (IETF) publicó una serie de RFC que estandarizaban el protocolo Secure Shell como estándar de Internet. Las RFC cubren el protocolo central, el protocolo de capa de transporte, el protocolo de autenticación de usuario, el protocolo de conexión y varias extensiones y algoritmos.

¿Cómo funciona SSH?

Elinicio de sesión remoto cifrado funciona teniendo dos ordenadores: un cliente y un servidor. El cliente es el ordenador que se utiliza para conectarse al servidor. El servidor es el ordenador en el que quieres hacer cosas. El cliente y el servidor utilizan un programa especial llamado SSH para comunicarse.

Elprimer paso es iniciar la conexión diciéndole al cliente a qué servidor quieres conectarte. Puedes hacer esto escribiendo algo como esto en tu terminal:

ssh nombre_usuario@direccion_ip

Esto significa: usar Secure Shell para conectarse al servidor con esta dirección IP (un número que identifica a un ordenador en Internet) usando este nombre de usuario (un nombre que identifica a un usuario en el ordenador).

El segundo paso es comprobar si puedes confiar en el servidor utilizando criptografía de clave pública. Se trata de una forma de utilizar las matemáticas para crear códigos secretos que sólo dos personas pueden entender. El servidor tiene dos códigos: una clave pública y una clave privada. La clave pública es como una cerradura abierta que cualquiera puede ver. La clave privada es como una clave secreta que sólo tiene el servidor. El servidor envía su clave pública al cliente, que comprueba si coincide con una clave de confianza almacenada en su ordenador o facilitada por alguien de su confianza. Si la clave es de confianza, puedes continuar. Si no, puedes parar o aceptar la clave tras comprobar su huella digital (un código corto que la identifica).

El tercer paso consiste en demostrar quién eres al servidor mediante la autenticación de usuario. Esta es una forma de demostrar que tienes permiso para acceder al servidor. Hay diferentes formas de hacerlo, como contraseñas, claves públicas o certificados. Las más comunes son las contraseñas y las claves públicas. La autenticación por contraseña es fácil pero no muy segura. Consiste en escribir la contraseña en el cliente y enviarla al servidor a través de una conexión secreta. El servidor comprueba si coincide con la contraseña almacenada para tu nombre de usuario.

La autenticación con clave pública es más segura, pero requiere más configuración. Implica utilizar otro par de códigos: una clave privada y una clave pública. La clave privada es como una clave secreta que guardas con tu cliente y nunca compartes con nadie. La clave pública es como una cerradura abierta que compartes con el servidor antes de conectarte. Puedes crear estas claves con una herramienta como ssh-keygen y copiarlas al servidor con una herramienta como ssh-copy-id. El servidor almacena tu clave pública en un archivo llamado authorized_keys en tu carpeta home (donde guardas tus archivos en el servidor). Al iniciar sesión con autenticación de clave pública, tu cliente crea un mensaje secreto con tu clave privada y lo envía al servidor, que lo comprueba con tu clave pública.

Una vez que el usuario se ha autenticado correctamente, el cliente puede solicitar uno o varios servicios al servidor utilizando distintos canales dentro del túnel cifrado. El servicio más común es el acceso shell, que permite al usuario ejecutar comandos en el servidor remoto. Otro servicio común es la transferencia de archivos, que permite al usuario copiar archivos entre los sistemas local y remoto utilizando protocolos como SCP (Secure Copy Protocol) o SFTP (SSH File Transfer Protocol). SCP es un protocolo heredado que utiliza Secure Shell para transferir archivos de forma segura, pero tiene algunas limitaciones e inconvenientes. SFTP es un protocolo más moderno y flexible que proporciona acceso a archivos, transferencia de archivos y funciones de gestión de archivos a través de SSH.

¿Cuáles son los usos comunes del protocolo SSH?

El protocolo Secure Socket Shell se utiliza comúnmente para varios propósitos, tales como:

  • Proporcionar acceso seguro a usuarios y procesos automatizados a sistemas remotos.
  • Transferir archivos de forma segura entre sistemas locales y remotos
  • Ejecutar comandos de forma remota en sistemas remotos
  • Gestionar la infraestructura de red y otros componentes críticos del sistema
  • Tunelización de otros protocolos o aplicaciones
  • Proxy de tráfico de red

Conclusión

Secure Shell es una herramienta potente y versátil que permite el inicio de sesión remoto seguro, la transferencia de archivos y la ejecución de comandos en redes no seguras. Utiliza criptografía de clave pública y cifrado simétrico para proporcionar autenticación de servidor, autenticación de usuario, confidencialidad e integridad. SSH también permite hacer diferentes cosas en el otro ordenador, como escribir comandos, enviar archivos o abrir programas. El protocolo de inicio de sesión seguro es muy importante para cualquier usuario o administrador de Linux / Windows que desee trabajar con sistemas remotos de forma segura y eficiente.

DedicServerEN