Introducción
SSH Tunnel (Secure Shell Tunnel) es una tecnología de red que le permite crear una conexión segura entre dos dispositivos, de modo que el tráfico de red entre ellos esté encriptado y protegido de posibles ataques externos.
Básicamente, un túnel SSH le permite crear un canal de comunicación seguro a través de Internet, utilizando el protocolo SSH (Secure Shell), que es un protocolo de red seguro para el acceso remoto y la administración del servidor.
Por ejemplo, puede usar un túnel SSH para acceder a un recurso o servicio de red a través de una conexión a Internet no segura, como una conexión Wi-Fi pública o una conexión a Internet no segura.
En este caso, crea una conexión SSH entre su dispositivo y un servidor seguro, y enruta el tráfico de red a través de esta conexión, de modo que el tráfico de red esté encriptado y protegido de ataques externos.
requisitos previos
Antes de comenzar, necesitará algunas cosas:
- Una computadora Linux
- Acceso a un servidor remoto que soporte SSH
Comando SSH básico
Primero, abra una ventana de terminal en su computadora con Linux. Puede hacerlo presionando Ctrl + Alt + T o navegando al menú de la aplicación y buscando "Terminal".
Para configurar un túnel SSH en Linux, usaremos el comando ssh. La sintaxis básica del comando ssh es la siguiente:
ssh [user@]hostname [-p port] [command]
Esto es lo que hace cada parte del comando:
- [user@ ]hostname]: El servidor remoto al que desea conectarse. Puede especificar el nombre de usuario que se usará para la conexión antes del nombre de host, así: nombre de usuario@nombre de host.
- [-p puerto]: el número de puerto que se usará para la conexión SSH. De forma predeterminada, SSH usa el puerto 22, pero puede especificar un número de puerto diferente si es necesario.
- [comando]: el comando que desea ejecutar en el servidor remoto. En este caso, crearemos un túnel SSH, por lo que no necesita especificar un comando.
Configurar túnel SSH local
La tunelización SSH local se utiliza para reenviar un puerto local a un servidor remoto. Por ejemplo, si tiene un servidor web ejecutándose en su computadora local al que desea acceder desde un servidor remoto, puede usar el túnel SSH local para reenviar el puerto del servidor web al servidor remoto. Aquí hay un ejemplo:
ssh -L [local_port]:[remote_host]:[remote_port] [user@]hostname -p [port]
Esto es lo que hace cada parte del comando:
- -L [puerto_local]:[host_remoto]:[puerto_remoto]: especifica el número de puerto local que se usará para el túnel SSH (puerto_local), el host remoto y el número de puerto para conectarse a través del túnel SSH (host_remoto:puerto_remoto).
- [usuario@]hostname: El servidor remoto al que desea conectarse. Puede especificar el nombre de usuario que se usará para la conexión antes del nombre de host, así: nombre de usuario@nombre de host.
- -p [puerto]: el número de puerto que se usará para la conexión SSH. De forma predeterminada, SSH usa el puerto 22, pero puede especificar un número de puerto diferente si es necesario.
Por ejemplo, si desea configurar un túnel SSH en el puerto 8080 para acceder a un servidor web en un servidor remoto con la dirección IP 192.168.1.100, use el siguiente comando:
ssh -L 8080:localhost:80 [email protected] -p 22
Este comando configura un túnel SSH que vincula el puerto local 8080 con el puerto 80 del servidor remoto, lo que le permite acceder al servidor web del servidor remoto en su máquina local navegando a "http://localhost:8080" en su navegador web.
Configurar túnel SSH remoto
El túnel SSH remoto se utiliza para reenviar un puerto remoto a una máquina local. Por ejemplo, si tiene un servidor de base de datos ejecutándose en un servidor remoto al que desea acceder desde su máquina local, puede usar el túnel SSH remoto para reenviar el puerto del servidor de base de datos a su máquina local. Aquí hay un ejemplo:
ssh -R 3306:localhost:3306 [email protected]
Este comando reenvía el puerto 3306 en el servidor remoto al puerto 3306 en la computadora local. Luego puede conectarse al servidor de la base de datos que se ejecuta en el servidor remoto conectándose a localhost:3306 en la máquina local.
Configurar túnel SSH inverso
El túnel SSH inverso se utiliza para permitir que un servidor remoto se conecte a una máquina local. Por ejemplo, si tiene una máquina local que ejecuta un servidor web al que desea permitir el acceso desde un servidor remoto, puede usar el túnel SSH inverso para crear una conexión segura entre las dos máquinas. Aquí hay un ejemplo:
En su máquina local, ejecute el siguiente comando:
ssh -R 8080:localhost:80 [email protected]
Este comando reenvía el puerto 8080 en el servidor remoto al puerto 80 en la computadora local. Luego puede acceder al servidor web que se ejecuta en su máquina local conectándose a http://remote-server.com:8080.
Mediante el uso de túneles SSH, puede acceder de forma segura a recursos en servidores remotos y reenviar puertos entre máquinas sin exponerlos a la Internet pública.
Mantenga activo el túnel SSH
Recuerde que los túneles SSH requieren una conexión activa al servidor remoto para permanecer abiertos. Si la conexión se interrumpe por cualquier motivo, el túnel se cerrará y tendrás que reconfigurarlo.
Para evitar esto, puede usar una herramienta como autossh, que vuelve a conectar automáticamente el túnel SSH si se pierde la conexión.
Conclusión
Configurar un túnel SSH en Linux puede ser una forma útil de proteger su privacidad y seguridad en línea. Usando el comando ssh, puede crear fácilmente un túnel seguro a un servidor remoto y enrutar su tráfico de Internet a través de él. siguiendo los pasos