Introducción al protocolo SSH

Descubramos qué es SSH (Secure SHell) y por qué es tan importante para establecer conexiones seguras entre clientes y servidores.

En esta guía, presentaremos uno de los protocolos de red más importantes, llamado SSH (Secure SHell , shell seguro). SSH es un protocolo que asegura la conexión entre un cliente y un servidor, mediante la creación de una sesión remota encriptada, utilizando una interfaz de línea de comandos simple y conveniente.

¿Qué es SSH?

Como ya se anticipó, SSH es un protocolo de red que encuentra su lugar inmediatamente por encima de la capa de transporte de la pila de protocolos ISO/OSI. El protocolo tiene una arquitectura interna basada en tres capas, similar a la ISO/OSI pero que no tiene relación con ella, aunque de hecho cubre sus últimos tres niveles.

Si bien SSH significa Secure Shell , no es un shell adecuado en el sentido de Unix Bourne y C. No es un intérprete de comandos ni proporciona expansión de comodines, historial de comandos, etc.

SSH se ocupa principalmente de crear un canal seguro para iniciar un shell en una computadora remota, con cifrado de extremo a extremo entre los dos sistemas.

Claramente, SSH no es la solución de ciberseguridad definitiva puesto que no protege las computadoras de intentos de intrusión activa o ataques de denegación de servicio, ni elimina otros peligros como virus y otras amenazas. Lo único que hace es proporcionar un cifrado y autenticación robustos y fáciles de usar.

Procediendo paso a paso, el aspecto más importante a definir para el protocolo SSH está relacionado con el cifrado de los datos transmitidos. Cada vez que se envían datos a través de la red desde una computadora, el SSH del remitente los cifra automáticamente. Más tarde, cuando llegan al destinatario, su SSH los descifra de la misma manera.

De esta forma, el proceso de encriptación es completamente transparente para los usuarios que pueden trabajar normalmente en el shell remoto del servidor, sin tener que preocuparse de que sus comunicaciones puedan ser leídas por terceros.

Además, los algoritmos de cifrado utilizados por SSH no solo son modernos, sino que también son lo suficientemente fuertes como para ser utilizados en aplicaciones críticas de grandes empresas.

Un programa de servidor SSH, generalmente lo instala y ejecuta un administrador del sistema, acepta o rechaza las conexiones entrantes a su computadora host.

Luego, los usuarios ejecutan programas de cliente SSH, en otras computadoras, para realizar solicitudes al servidor SSH. Las solicitudes pueden ser variadas pero las más comunes se pueden resumir en: “Pido conectarme”, “Envíame un archivo” o “Ejecutar este comando”.

El flujo de trabajo que se muestra en la figura ciertamente está simplificado, pero da una idea de cómo funciona el protocolo SSH.

Descripción general del protocolo

SSH es un protocolo y no un software

. SSH, creado por Tatu Ylönen para Unix, se llamaba simplemente “SSH”. Esto fue confuso porque SSH también era el nombre del propio protocolo.

En general, sin embargo, cuando nos referimos a SSH nos referimos al protocolo, aunque también suele usarse como sinónimo para referirse a algún producto.

Dicho de otra manera, SSH es simplemente una especificación, una colección de reglas, sobre cómo debe ocurrir la comunicación para ser segura dentro de una red. Específicamente, el protocolo SSH cubre la autenticación, el cifrado y la integridad de los datos transmitidos a través de la red.

Autenticación

Determinar de forma fiable la identidad de una persona. Si intenta acceder a una cuenta en una computadora remota, SSH solicita una prueba digital de su identidad. Si superas esta prueba, podrás acceder; de lo contrario, SSH rechaza la conexión.

Cifrado

Los datos están encriptados para que solo sean comprensibles para los destinatarios. De esta forma quedan protegidos a su paso por la red.

Integridad

Garantiza que los datos que viajan por la red lleguen sin alteraciones. Si personas malintencionadas los capturaran y modificaran, SSH lo detectaría.

En resumen, SSH crea conexiones de red entre sistemas, con fuertes garantías de que las partes en ambos extremos de la conexión son genuinas. También garantiza que todos los datos que pasan a través de estas conexiones lleguen sin ser modificados ni leídos por terceros.

Historia de SSH

Este protocolo fue creado en 1995 por un investigador finlandés (un tal Tatu Ylönen) quien, inspirado por un ataque de detección de contraseñas en su universidad, decidió crear un protocolo capaz de asegurar la conexión entre dos dispositivos.

SSH1 (este término se refiere al nombre de la aplicación y no al protocolo. Nótese la falta del guión en el nombre) y el protocolo SSH-1 fueron desarrollados por Ylönen y cuando sus versiones beta comenzaron a atraer la atención de la comunidad , se dio cuenta de que su producto necesitaba ser difundido más ampliamente.

Por esta razón, en julio de 1995, la aplicación SSH1 se lanzó al público como software libre, con su código fuente, lo que permitió copiar y utilizar el programa sin costo alguno.

En 1998, SSH Communications Security Corp. (SCS) lanzó el producto de software SSH Secure Shell (SSH2), basado en el protocolo SSH-2, que es la próxima versión del desarrollado en 1995.

Sin embargo, SSH2 no pudo reemplazar por completo a SSH1, ya que carecía de algunas funciones y tenía una licencia más restrictiva que su predecesor. Por estas razones, muchos usuarios no encontraron suficiente motivación para migrar a SSH-2, aunque en la práctica era un protocolo mejor y más seguro que el anterior.

Esto cambió con la aparición de OpenSSH , una implementación gratuita del protocolo SSH-2 del proyecto OpenBSD que presentaremos en las próximas lecciones.


Conclusión final

En esta lección hemos introducido el protocolo SSH y hemos visto como este está muy extendido hoy en día debido a sus peculiares características. Se incluye en la mayoría de las distribuciones de Windows, Linux, macOS y prácticamente todos los demás sistemas operativos inspirados en Unix.

SSH resulta ser un enfoque poderoso y conveniente para proteger las comunicaciones entre sistemas dentro de una red. Utilizando tecnologías seguras de autenticación y cifrado, este protocolo admite inicios de sesión remotos, ejecución de comandos remotos, transferencias de archivos, control de acceso y reenvío de puertos TCP/IP.

Estas características se describirán más a lo largo de la guía de SSH.

Relacionado

3 Razones por las que los técnicos deberían aprender Linux

Linux como Mac o Windows OS, es un sistema operativo. Un día se utilizó principalmente para servidores y no era una buena solución para los PC personales. La causa de eso era su interfaz de usuario que era difícil de entender para el usuario más común Sin embargo, los desarrolladores han estado mejorado continuamente el sistema de Linux durante la última década digital y ahora, es ¡SEGUIR LEYENDO!

4 Cosas que no sabías que podías hacer con las Acciones de GitHub

GitHub Actions es una plataforma poderosa que permite a un equipo pasar el código a la nube, todo desde la comodidad de los repositorios git. A continuación se analizan algunos ejemplos de cómo se pueden usar las acciones de GitHub para automatizar y orquestar un canal para DevOps a través de las acciones de Github. 1. Comprimir las imágenes para la web GitHub Marketplace es un ¡SEGUIR LEYENDO!

4 Habilidades en la Nube más Demandadas para 2024

La computación en la nube es un término más general con significados variados como grid computing, clustering, virtualización, hardware básico, alojamiento y muchos más conceptos que se incluyen bajo un mismo término general. Para comenzar como desarrollador de la nube, debes ser experto en cualquier lenguaje POO, incluidos Net, Java, o lenguajes de programación orientados a la web como SCALA, RoR, PHP, etc. Para las operaciones ¡SEGUIR LEYENDO!

5 Lenguajes de programación que todo ingeniero DevOps debería aprender

La adopción de DevOps ha aumentado en los últimos dos años, lo que ha ayudado a las organizaciones a reunir todas las funciones, permitiendo proporcionar software confiable con una entrega más rápida y de mejor calidad. Si eres ingeniero DevOps y buscas los mejores lenguajes de programación para optimizar tu trabajo, aquí hay la lista que necesitas. 1. Python Python se ha convertido en el lenguaje ¡SEGUIR LEYENDO!

¿Qué significa AaaS? Análisis como servicio

Analytics as a service (AaaS) se refiere a la provisión de software analítico y operaciones a través de tecnologías proporcionadas por la web. Estos tipos de soluciones ofrecen a las empresas una alternativa al desarrollo de configuraciones de hardware internas solo para realizar análisis comerciales. Para poner el análisis como servicio en contexto, este tipo de servicio es parte de una gama mucho más amplia de ¡SEGUIR LEYENDO!

¿Qué significa ABPD? Descubrimiento automatizado de procesos comerciales

El descubrimiento automatizado de procesos comerciales (ABPD) es un tipo específico de análisis de procesos comerciales que está en gran medida automatizado y depende en gran medida de la creación de lógica algorítmica y computacional. El principio de ABPD es que tipos similares de herramientas de análisis empresarial recopilan automáticamente datos de documentos como auditorías , registros de eventos y los compilan en información útil que ¡SEGUIR LEYENDO!

¿Cómo abrir instancias de AWS EC2 con Terraform?

La automatización puede ahorrarle tiempo, dinero y disminuir los errores. Una herramienta popular destinada a ayudar en ese objetivo es Terraform. Terraform está destinado a la creación de versiones de la infraestructura a través de la configuración como código. Otra práctica común es trasladar las cargas de trabajo locales a la nube, y una de las más importantes es Amazon Web Services (AWS). Además de ofrecer ¡SEGUIR LEYENDO!

¿Qué significa ABS? Sistema de respaldo automático

Un sistema de respaldo automático es un sistema que permite la recuperación de información almacenada en las computadoras. Las copias de seguridad automáticas son necesarias para realizar una copia de seguridad de los datos almacenados y permitir la recuperación de datos en caso de que el sistema falle. Al automatizar una copia de seguridad a través de un sistema de copia de seguridad regular, el usuario ¡SEGUIR LEYENDO!

¿Qué significa abstracción?

La abstracción es un principio fundamental en algunos tipos de informática. Es un aspecto de diseño clave de los lenguajes de programación orientados a objetos y las interfaces de programación de aplicaciones. También es una de las ideas menos comprendidas en la programación, en parte por razones semánticas. La abstracción se define comúnmente como la extracción de información relevante de un conjunto de datos más grande, donde ¡SEGUIR LEYENDO!

¿Qué es ACC? Contenedor de cliente de aplicación

Un contenedor de cliente de aplicación (ACC) es un conjunto de clases Java, bibliotecas y otros archivos necesarios para la ejecución del cliente de aplicación que se incluyen con el cliente de aplicación para su distribución. El ACC administra la ejecución del cliente de la aplicación y utiliza los recursos del sistema necesarios para habilitar la funcionalidad del cliente de la aplicación. Las dos características principales ¡SEGUIR LEYENDO!

Adobe se convierte en noticia, tras un tweet contra sus políticas de cancelación

La tarifa de cancelación anticipada de Adobe, se ha convertido en noticia a lo largo del día de ayer, tras que un usuario de Twitter decidiera mostrar la factura que le exigían para poder cancelar uno de sus planes de sus planes servicios en la nube. El tweet de la discordia, es el siguiente. WHAT THE ACTUAL FUCK ADOBE? pic.twitter.com/WxSF7laSH7— goatdad enjoyer ❤️ (@MRDADDGUY) April 12, ¡SEGUIR LEYENDO!