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:
- Acceso SSH al servidor bastión. Este servidor debe estar accesible desde tu máquina local.
- Credenciales de la máquina de destino. La máquina a la que quieres acceder detrás del bastión.
- SSH instalado. Verifica que tienes
ssh
instalado en tu máquina local ejecutandossh -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
- 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 puerto2222
de tu máquina local al puerto22
(SSH) de la máquina destino, pasando por el bastión. - 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
- Una vez conectado, prueba comandos simples como
ls
owhoami
en la máquina destino. - 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.