Guía paso a paso para realizar tunneling SSH utilizando un servidor bastión

Artículos Guías Manuales Sistemas Linux Windows Binario 0

Un servidor bastión actúa como un intermediario para conectarse de forma segura a máquinas en redes internas. Usando SSH tunneling, puedes crear un canal seguro para "saltar" de un servidor a otro. Aquí te mostramos cómo lograrlo.

Paso 1: Configuración inicial

Antes de comenzar, asegúrate de tener lo siguiente:

  1. Acceso SSH al servidor bastión. Este servidor debe estar accesible desde tu máquina local.
  2. Credenciales de la máquina de destino. La máquina a la que quieres acceder detrás del bastión.
  3. SSH instalado. Verifica que tienes ssh instalado en tu máquina local ejecutando ssh -V.

Paso 2: Acceso directo al servidor bastión

Primero, verifica que puedes conectarte al servidor bastión:

ssh usuario_bastion@ip_bastion

Si puedes acceder, estás listo para continuar.

Paso 3: Configuración del archivo SSH (opcional pero recomendado)

Editar el archivo de configuración SSH (~/.ssh/config) simplifica las conexiones. Añade una entrada para el servidor bastión:

Host bastion
HostName ip_bastion
User usuario_bastion
IdentityFile ~/.ssh/id_rsa # Ruta a tu clave privada, si aplica

Y otra entrada para la máquina destino detrás del bastión:

Host destino
HostName ip_destino
User usuario_destino
ProxyJump bastion

Esto permite conectarte a la máquina destino simplemente con:

ssh destino

Paso 4: Crear un túnel SSH manualmente

Si prefieres no usar un archivo de configuración, puedes crear el túnel directamente. Hay dos métodos principales:

Método 1: Usando ProxyJump (recomendado para OpenSSH ≥7.3)

ssh -J usuario_bastion@ip_bastion usuario_destino@ip_destino

Método 2: Redirigiendo manualmente los puertos

  1. Primer paso: Establecer el túnel al bastión y redirigir un puerto local. Ejecuta el siguiente comando en tu máquina local:

    ssh -L 2222:ip_destino:22 usuario_bastion@ip_bastion

    Esto redirige el puerto 2222 de tu máquina local al puerto 22 (SSH) de la máquina destino, pasando por el bastión.
  2. Segundo paso: Conectarte a la máquina destino. En una nueva terminal, conecta usando el puerto redirigido:

    ssh -p 2222 usuario_destino@localhost

Paso 5: Verificar la conexión

  1. Una vez conectado, prueba comandos simples como ls o whoami en la máquina destino.
  2. Si encuentras problemas, revisa los siguientes aspectos:
    • Configuración de las claves SSH.
    • Accesibilidad de los puertos entre bastión y destino.
    • Correcta redirección de puertos.

Paso 6: Automatización (opcional)

Si necesitas realizar este proceso frecuentemente, considera usar un script para automatizar la creación del túnel y la conexión:

#!/bin/bash

# Variables
BASTION="usuario_bastion@ip_bastion"
DESTINO="usuario_destino@ip_destino"
LOCAL_PORT=2222

# Crear túnel SSH
ssh -f -N -L $LOCAL_PORT:$DESTINO:22 $BASTION

# Conectarse al destino
ssh -p $LOCAL_PORT usuario_destino@localhost

Guarda esto como conectar.sh, hazlo ejecutable (chmod +x conectar.sh) y úsalo cuando lo necesites.

Consejos finales

  • Seguridad: Usa claves SSH en lugar de contraseñas para mayor seguridad.
  • Limpieza: Cuando termines, asegúrate de cerrar los túneles SSH abiertos.
  • Logs: Habilita la opción -v en los comandos SSH para depurar en caso de problemas.

Siguiendo estos pasos, puedes implementar fácilmente un túnel SSH a través de un servidor bastión para conectar máquinas de forma segura.