Túnel SSH directo: cómo crear una conexión segura entre dos máquinas sin conectividad directa



¿Alguna vez has necesitado acceder por SSH a una máquina que no está en tu misma red o que está detrás de un firewall? Si es así, este post te interesa. Te voy a explicar cómo puedes crear un túnel SSH directo entre dos máquinas que no tienen conectividad directa, utilizando un tercer equipo auxiliar que haga de enlace.

La imagen muestra un diagrama de red que representa un túnel SSH directo entre dos máquinas, nodo1 y nodo2.

Nodo1 y nodo2 no tienen conectividad directa entre ellas, pero ambas pueden acceder a un servidor SSH llamado enlace.

El túnel SSH se establece entre nodo1 y enlace. El tráfico del puerto 22345 local de nodo1 se reenvía al puerto 22 remoto del servidor enlace. El servidor enlace, a su vez, reenviará el tráfico al puerto 22 del servidor nodo2.

En este ejemplo, la máquina nodo1 se utiliza para crear el túnel SSH. El usuario netadmin del servidor enlace se utiliza para establecer la conexión.

Una vez que se ha establecido el túnel SSH, podemos conectarnos a nodo2 desde nodo1 utilizando el puerto 22345. La sesión se establecerá de manera segura a través del servidor enlace.

En la imagen, podemos ver los siguientes elementos:

  • Nodo1: La máquina local que crea el túnel SSH.
  • Nodo2: La máquina remota a la que queremos conectarnos.
  • Enlace: El servidor SSH que actúa como intermediario entre nodo1 y nodo2.
  • Puerto 22345: El puerto local que se utiliza para crear el túnel SSH.
  • Puerto 22: El puerto remoto que se utiliza para reenviar el tráfico.

Conectando Mundos: Creando un Túnel SSH Directo en Linux

En el vasto universo de la administración de sistemas, a menudo nos enfrentamos al desafío de conectar máquinas que, por razones diversas, no pueden comunicarse directamente. En este escenario, el uso de un túnel SSH directo se convierte en una solución ingeniosa para sortear estas limitaciones y facilitar la conexión entre dos nodos aparentemente distantes. En este artículo, exploraremos paso a paso cómo establecer un túnel SSH directo entre dos equipos en un entorno Linux.

Requisitos Previos y Herramientas Necesarias

Antes de sumergirnos en el fascinante mundo de los túneles SSH directos, asegurémonos de tener las herramientas adecuadas instaladas. Necesitaremos tanto el servidor como el cliente OpenSSH. Si aún no los tienes instalados, puedes hacerlo fácilmente con:

sudo apt-get install openssh-server openssh-client

Planteamiento del Problema

Imaginemos que queremos conectar dos máquinas, «nodo1» y «nodo2», que no tienen conectividad directa. Para superar este obstáculo, introducimos un tercer equipo denominado «enlace». El equipo «enlace» es visible tanto para «nodo1» como para «nodo2», actuando como un puente para establecer la conexión deseada.

Creación del Túnel SSH entre «nodo1» y «enlace»

Para iniciar el proceso, estableceremos una conexión SSH entre «nodo1» y «enlace». Utilizaremos el siguiente comando, que vinculará un puerto de «nodo1» con la IP y el puerto de escucha del servicio SSH en «nodo2»:

ssh -fgN -L 22345:192.168.200.10:22 netadmin@172.20.10.196

Este comando es clave para la creación del túnel. Desglosemos sus componentes:

  • -f: Ejecuta el comando en segundo plano.
  • -g: Permite la redirección de puertos desde otras máquinas.
  • -N: Indica que no se ejecutará ningún comando remoto.

Al ejecutar este comando, se nos solicitará la contraseña del usuario «netadmin» en el equipo «enlace». Una vez ingresada, el túnel SSH estará activo. Podemos verificarlo utilizando:

ps -ax | grep netadmin

Conexión «Local» al Puerto Enlazado

Ahora que nuestro túnel está en funcionamiento, podemos conectarnos localmente al puerto enlazado, en este caso, el puerto 22345. Esta conexión nos lleva directamente al puerto 22 del «nodo2». Observemos cómo realizamos esta conexión:

ssh -p 22345 operador@localhost

Al ejecutar este comando, el proceso de negociación del protocolo SSH se reenvía hacia la máquina «nodo2». La solicitud de credenciales de acceso proviene del «nodo2», y una vez proporcionadas correctamente, ¡estamos dentro!

operador@localhost's password:

Ahora, nos encontramos en el sistema del «nodo2», listos para realizar las acciones necesarias.

El establecimiento de un túnel SSH ofrece una variedad de usos prácticos y beneficios, especialmente en entornos de red complejos. Aquí hay algunos casos comunes donde la creación de un túnel SSH puede ser invaluable.

  • Acceso Remoto Seguro:
    Permite acceder de forma segura a recursos en una red interna desde una ubicación remota, proporcionando una capa adicional de seguridad mediante la encriptación del tráfico.
  • Administración de Sistemas:
    Facilita la administración remota de servidores y sistemas, permitiendo la ejecución de comandos y la gestión de archivos de forma segura a través de la conexión SSH.
  • Acceso a Bases de Datos:
    Permite acceder de manera segura a bases de datos que están detrás de un firewall, facilitando la gestión y consulta de datos sensibles.
  • Redirección de Puertos:
    Puede utilizarse para redirigir tráfico de un puerto local a un puerto remoto, lo que resulta útil para acceder a servicios específicos en entornos donde el acceso directo está restringido.
  • Transferencia Segura de Archivos:
    Facilita la transferencia segura de archivos entre máquinas, garantizando que los datos transmitidos estén protegidos mediante el cifrado SSH.
  • Sortear Restricciones de Firewall:
    Ayuda a sortear las restricciones de firewall y permite el acceso a servicios que de otro modo no serían accesibles debido a políticas de red restrictivas.
  • Desarrollo y Pruebas:
    Facilita el desarrollo y las pruebas al permitir acceder a servicios específicos en entornos de desarrollo desde ubicaciones externas de manera segura.
  • Seguridad en Conexiones Wi-Fi Públicas:
    Proporciona una capa adicional de seguridad al conectarse a través de redes Wi-Fi públicas, protegiendo las comunicaciones contra posibles amenazas de seguridad.
  • Conexión a Dispositivos IoT:
    Permite el acceso seguro a dispositivos IoT (Internet de las cosas) que pueden estar detrás de firewalls, facilitando la administración y monitoreo remoto.
  • Trabajo Colaborativo:
    Facilita el trabajo colaborativo al permitir el acceso seguro a recursos compartidos entre equipos distribuidos geográficamente.

El uso de túneles SSH proporciona flexibilidad y seguridad en la comunicación y el acceso remoto, lo que lo convierte en una herramienta esencial para profesionales de TI y administradores de sistemas.

En conclusión, los túneles SSH directos ofrecen una solución eficaz para conectar máquinas en entornos donde la conectividad directa no es posible. Al seguir estos pasos, los usuarios de Linux pueden superar barreras de red y establecer conexiones seguras entre nodos distantes. ¡Que la conexión fluya sin restricciones!