Túnel multisalto con PuTTY

Túnel multisalto con PuTTY

¿Cómo configuro Putty para una conexión de túnel SSH de 3 saltos? Sé cómo configurar Putty para una conexión de túnel SSH de 2 saltos, pero ahora estoy buscando una manera de configurarlo con 3 saltos. ¿Alguien puede explicarme el procedimiento sobre cómo podemos lograrlo?

Para dos saltos, sigo el siguiente método.

Windows 10 (Putty) --> Máquina Linux1 (192.168.1.100) --> Máquina Linux2 (192.168.1.150)

  • En la ventana de sesión se proporciona la dirección de destino (192.168.1.150) y el puerto 22.
  • En la opción Proxy, le he dado la IP del servidor intermedio (192.168.1.100) y el puerto 22.
  • También para el comando telnet, he dado lo siguiente.

plink -agent -l %usuario %proxyhost -nc %host:%puerto

La configuración anterior funciona bien durante 2 saltos. Pero ahora mi requisito es un túnel SSH de 3 saltos. ¿Cómo modifico el actual y agrego 1 salto más?

Respuesta1

No está claro si solo desea conectarse a una máquina adicional en la misma red que las máquinas Linux 1/2 o si necesita saltar a otra red más allá de ellas (por ejemplo, la máquina 4 en 172.22.1.x).

Si simplemente está intentando acceder a otra máquina en la misma red 192.168.1.x que la Máquina Linux 1/2, use unaTúnel SSH(que se encuentra en el menú de Putty Connection -> SSH -> Tunnels). Puede configurar múltiples túneles para tantas máquinas como necesite.

Si realmente está intentando acceder a una tercera red, puede abrir otra instancia de Putty que se conecte a través de un túnel definido en su instancia de Putty original.

  • Defina un túnel en Putty que reenvíe un puerto en su máquina local (2222 por ejemplo) al puerto 22 en Linux Machine2
  • Luego abra otra instancia de Putty en su máquina Windows que use el túnel (es decir, conéctese a Localhost:2222) Y defina un nuevo túnel para reenviar un puerto adicional (2223, por ejemplo) al puerto 22 en la Máquina4 (su tercer salto).
  • Abra una instancia más de Putty y conéctese a Localhost:2223 para acceder a Machine4

Sólo he hecho esto con 2 saltos, así que no sé cómo funcionará. No es una solución ideal, pero puede funcionar si ésta es su única opción.

Editar: si no está limitado a Windows/Putty,esto (SSH transparente de múltiples saltos)puedes hacer lo que quieras. Si está limitado a Windows,CygwinEs posible que tenga algunas herramientas SSH más flexibles.

Respuesta2

Túnel multisalto con PuTTY

PuTTY -> jHost1 (jIP1) -> jHost2 (jIP2) -> Destino (dIP)

Respuesta rápida:

Su enfoque es correcto, simplemente use plink a jHost1 como proxy local para plink a jHost2:

plink user2@jHost2 -nc dIP:dPort -proxycmd "plink user1@jIP1 -loghost jHost1 -nc jIP2:jPort2"

Más elaboración y advertencias:

  1. Úselo -t(en ambos plinks) para que suseñales terminalesfunciona (ya que no estás invocando un shell remoto en los hosts de salto)

  2. Haycontraseñas en texto plano(en la línea de comando/configuración de PuTTY) cuando -l user -pw passwordse usa (no importa si usa el marcador de posición PuTTY %proxypass).

    • Úselo -ipara especificar una clave privada sin frase de contraseña (ya que PuTTY usa la E/S estándar y no podrá ingresarla)
    • o usar -agentpara usar las claves del concurso
    • El reenvío de agente ( -a) no es necesario porque los enlaces se ejecutan localmente.
  3. Ejecute los enlaces desde la línea de comando por primera vez para ver si no hay preguntas adicionales. Generalmente obtienes un "El paquete entrante fue confuso al descifrarlo"error, si plink le solicita que importe la clave SSH de jHost.

  4. Tenga en cuenta el uso de jHosty jIP. Por jHostme refiero a lanombre de host lógicopara la búsqueda de claves "known_hosts" de plink (almacenamiento PuTTY en el registro de Windows). jIPes el nombre/IP del siguiente salto accesible desde el salto actual. (Por lo general, te estás conectando desde otra red y no puedes volver a conectar jHost).

    • El plink externo puede usarse simplemente jHost2porque la conexión es proxy y no hay ninguna búsqueda de DNS.
    • El plink interno tiene que usar para jIP1conectarse, -loghost jHost1para la búsqueda de claves local y -nc jIP2:jPort2para NetCat para el siguiente salto.
  5. Si necesitas usarreenvío TCPen el Destino (que debe estar permitido), lo único que debe hacer es configurarlo en PuTTY como si no hubiera ningún host de salto. Esto se debe a que la conexión SSH al destino se realiza mediante un túnel a través de jHost2 y esta conexión, a su vez, a través de jHost1, y los hosts de salto no tienen conocimiento del túnel.

    • A diferencia de simplemente hacer sshing para saltar al host y ejecutar ssh nuevamente para llegar al destino, donde necesita usar <enter>~C<enter>secuencia para escapar al cliente ssh del host de salto y usar los comandos -L/ -Rpara agregar túneles dinámicamente.

Sin reenvío TCP

plink -nc( ssh -Wequivalente) es un proxy local que TCP reenvía su E/S estándar a través de un host de salto. Si no puede permitir el reenvío de TCP en los hosts de salto, como solución limitada puede utilizar ssh jHost1y usarlo ssh user2@jHost2 -t ssh user@Destinationen "Conexión -> SSH -> Comando remoto" sin configuración de proxy.

De esta manera, inicia un nuevo cliente ssh en el host de salto (y las claves deben estar presentes/contraseñas reescritas/agente reenviado, configuración/hosts_conocidos duplicados...).

información relacionada