Conexión SSH a Servidores Remotos a través de un Host Intermedio con VSCode

Published:

En el mundo de la administración de servidores y redes, a menudo nos encontramos con la necesidad de acceder a un servidor remoto a través de un «host intermedio». Este tipo de configuración se utiliza cuando no se puede acceder directamente al servidor de destino debido a restricciones de red o seguridad. En este artículo, aprenderás cómo configurar SSH para saltar entre servidores usando la opción ProxyJump de manera sencilla y eficiente, sin tener que introducir tus credenciales manualmente cada vez y además usando VSCode para hacerlo con las ventajas que nos da este editor.

NOTA, estoy usando mi sistema Debian 12 para conectarme a un server intermedio (que funcionará como jump) que es un Linux y de ahí a otro server que es otro Linux.

¿Qué es un ProxyJump?

ProxyJump es una opción en SSH que permite realizar conexiones a un servidor remoto a través de un «salto» a otro servidor intermedio. En otras palabras, en lugar de conectarse directamente al servidor de destino, primero te conectas a un servidor intermedio (puede ser un servidor bastión) y desde allí saltas al servidor final. Esta técnica se utiliza comúnmente en entornos de red donde el acceso directo a ciertos servidores está restringido por razones de seguridad o infraestructura.

¿Por qué usar un servidor intermedio?

Algunos de los motivos más comunes para usar un servidor intermedio son:

  • Seguridad: Limitar el acceso directo a los servidores sensibles y permitir que solo los usuarios autorizados puedan acceder a través de un host de salto.
  • Redes privadas: En redes privadas, puede ser necesario acceder a recursos internos a través de una máquina que esté conectada a esa red interna (a menudo llamada «bastión»).
  • Configuración de infraestructura: En configuraciones de red más complejas, el servidor intermedio puede ser el punto de entrada a un sistema de múltiples servidores.

Configuración de SSH con ProxyJump

El archivo de configuración de SSH, generalmente ubicado en ~/.ssh/config, es el lugar donde puedes especificar configuraciones personalizadas para tus conexiones SSH, como el uso de claves privadas, puertos, y configuraciones de salto.

A continuación, te mostraremos cómo configurar el archivo ~/.ssh/config para conectarte a un servidor a través de un host intermedio utilizando ProxyJump.

Paso 1: Editar el archivo de configuración SSH

  1. Abre el archivo de configuración de SSH (~/.ssh/config) en tu editor de texto preferido. Si no tienes este archivo, puedes crearlo.
nano ~/.ssh/config
  1. Dentro del archivo de configuración, define la configuración para el host intermedio (server1) y el servidor de destino al que deseas acceder (server2).

Ejemplo de configuración:

# Configuración para conectar a server jump
Host server1
  HostName server1.nksistemas.com
  User user-test1
  IdentityFile ~/.ssh/id_rsa  # Ruta de tu clave SSH, si es necesario

# Configuración para conectar a server2 a través de iwmosh
Host server2
  HostName 192.168.10.10  # IP o nombre del servidor de destino
  User user-test1
  ProxyJump server1  # Usar server1 como el servidor intermedio
  IdentityFile ~/.ssh/id_rsa  # Ruta de tu clave SSH, si es necesario

Explicación del archivo:

  • Host server1: Esta es la configuración para el servidor intermedio al que te conectarás primero. El nombre de host es server1 y se conecta a través de la dirección server1.nksistemas.com usando el usuario user-test1.
  • Host server2: Aquí configuramos la conexión al servidor de destino, usando la dirección IP 192.168.10.10 (puedes usar un nombre de host si lo prefieres) y también el usuario user-test1. El parámetro ProxyJump server1 indica que la conexión debe pasar primero por el servidor server1.

Paso 2: Conectar a través del servidor intermedio

Una vez configurado tu archivo de SSH, puedes conectarte al servidor de destino de forma sencilla utilizando el comando SSH y el nombre del host que especificaste en el archivo de configuración.

Para conectarte a server2 a través del servidor intermedio server1, simplemente utiliza:

ssh server2

SSH resolverá la configuración y hará el salto automático a través del host intermedio, sin necesidad de escribir manualmente las credenciales o las direcciones IP.

¿Qué pasa si se necesita una contraseña?

Si tu servidor de destino (server2) requiere una contraseña para la conexión, SSH te la pedirá al intentar conectarte. Sin embargo, si deseas evitar ingresar la contraseña cada vez, puedes configurar la autenticación mediante una clave SSH.

Asegúrate de que la clave pública de tu máquina esté agregada en el archivo ~/.ssh/authorized_keys del servidor al que deseas conectarte. Si el servidor intermedio requiere una contraseña, también puedes configurar la autenticación mediante clave SSH en ese servidor de la misma manera.

Mejorando la seguridad

Una de las ventajas de usar ProxyJump es que puedes mejorar la seguridad de tu infraestructura. Si bien el servidor intermedio (server1) es accesible, el servidor de destino está «protegido» detrás de él. Esto significa que puedes controlar mejor quién tiene acceso al servidor de destino al restringir el acceso al servidor intermedio y configurando reglas de firewall y autenticación adecuadas.

Además, si el servidor intermedio está en una red privada, puedes utilizar ProxyJump para acceder de manera segura sin exponer directamente el servidor de destino a Internet.

Conexión con vscode

Vamos a necesitar la extensión Remote-SSH que si vas al link, explique como hacerlo

Ahora podemos ir a la parte inferior izquierda y elegir «Connect to host» donde estará guardada nuestra configuración, veremos 2 host, server1 y server2, como queremos ir a server2 le damos clic y en el caso que no tenga llaves ssh nos pedira la clave.

Una vez conectados vamos a Open Folders para ir a ver y editar archivos de configuración del sistema Linux remoto.

Conclusión

La opción ProxyJump de SSH es una herramienta poderosa y flexible para conectarse a servidores remotos a través de un host intermedio. Con solo unos pocos ajustes en el archivo de configuración, puedes mejorar la seguridad, simplificar tus conexiones y evitar tener que introducir contraseñas manualmente cada vez que te conectes a tus servidores.

Si tienes múltiples servidores a los que acceder a través de un host intermedio, esta es una solución ideal que te ahorrará tiempo y esfuerzo. Configurar adecuadamente tu archivo de SSH te permitirá administrar tus conexiones remotas de manera eficiente y segura.

- Advertisement -
Jorge
Jorgehttps://nksistemas.com
Soy Jorge, Sr Sysadmin Linux/DevOps/SRE y creador de NKSistemas.com Trabajo con plataformas: Linux, Windows, AWS, GCP, VMware, Helm, kubernetes, Docker, etc.

Related articles