SSH como socks proxy a través de múltiples hosts

21

¿Se puede lograr lo siguiente con SSH?

Hay tres máquinas involucradas:

A. My local machine at home
B. The SSH gateway server at school
C. A workstation in a lab, only reachable through B

Quiero configurar un proxy SOCKS. Quiero poder navegar en mi computadora local en casa, como si estuviera en el laboratorio. Esto se debe a algunos sitios a los que solo se puede acceder desde la IP pública de la escuela.

Así que quiero ejecutar un proxy SOCKS en el host C. Pero no logro hacer que funcione desde el host A.

Me conecto a la puerta de enlace y desde la puerta de enlace me conecto a la estación de trabajo. Pero no puedo hacer que la puerta de enlace transfiera el tráfico correctamente desde y hacia el proxy.

¿Cómo puedo hacer esto?

Sébastien
fuente

Respuestas:

28

Tres métodos ligeramente diferentes. (Reemplace $ PORTX y $ PORTY con los números de puerto que elija).

Primer método: ProxyCommand

machine-a$ ssh -f -N -D $PORT -oProxyCommand="ssh -W %h:%p machine-b" machine-c

Segundo método:

  1. Conéctese de A a B, con "reenvío local" de $PORTa .localhost:$PORT

    machine-a$ ssh -L $PORT:localhost:$PORT machine-b
    
  2. Conéctese de B a C, con el "reenvío dinámico" habilitado.

    machine-b$ ssh -f -N -D $PORT machine-c
    
  3. Configure su navegador para usar proxy en .localhost:$PORT

Los pasos 1 y 2 se pueden resumir en:

ssh -f -L $PORT:localhost:$PORT machine-b "ssh -f -N -D $PORT machine-c"

Tercer método:

  1. Conéctese de A a B, con "reenvío local" de $PORTXa machine-c:22.

    machine-a$ ssh -f -N -L $PORTX:machine-c:22 machine-b
    
  2. Conéctese de A a C sobre el túnel, con "reenvío dinámico".

    machine-a$ ssh -f -N -D $PORTY localhost -p $PORTX
    

    (También puede omitir -f -Nsi desea usar el mismo túnel para conexiones interactivas).

  3. Configure su navegador para usar proxy en .localhost:$PORTY

Gravedad
fuente
1
Increíble, gracias! ¡Ojalá pudiera dar un +1 extra por hacerlo de una sola línea!
jwbensley
2

Para AWS EMR Sock Proxy, a continuación se detallan los pasos aplicados. Suponiendo que tenemos dos escenarios de lúpulo como a continuación

[your-laptop] --<ssh key1>--> [Jump-Box] --<ssh key2>--> [EMR-Master]

Y ya ha configurado FoxyProxy en su navegador. Actívelo antes de comenzar antes de comenzar los pasos.

Paso 1. Inicie sesión en Jump Box

ssh -i ~ / .ssh / key1 ec2-user @

Paso 2. Configure el túnel dinámico en el cuadro Jump, suponiendo que Key2 esté presente allí.

ssh -i ~ / key2 -N -D 8157 hadoop @

Paso 3. Abra una nueva consola en el cliente ssh y configure el túnel.

ssh -i ~ / .ssh / key1 -L 8157: localhost: 8157 ec2-usuario @ -N

kartik
fuente