SSH como proxy de meias através de vários hosts

21

O seguinte pode ser alcançado com o SSH.

Existem três máquinas envolvidas:

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

Quero configurar um proxy SOCKS. Quero poder navegar no meu computador local em casa, como se estivesse no laboratório. Isso ocorre devido a alguns sites acessíveis apenas pelo IP público da escola.

Então, eu quero executar um proxy SOCKS no host C. Mas não consigo fazê-lo funcionar no host A.

Eu me conecto ao gateway e, a partir do gateway, à estação de trabalho. Mas não posso fazer com que o gateway transfira o tráfego corretamente de e para o proxy.

Como posso fazer isso?

Sébastien
fonte

Respostas:

28

Três métodos ligeiramente diferentes. (Substitua $ PORTX e $ PORTY pelos números de porta de sua escolha.)

Primeiro método: ProxyCommand

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

Segundo método:

  1. Conecte-se de A a B, com "encaminhamento local" de $PORTpara .localhost:$PORT

    machine-a$ ssh -L $PORT:localhost:$PORT machine-b
    
  2. Conecte-se de B a C, com o "encaminhamento dinâmico" ativado.

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

As etapas 1 e 2 podem ser resumidas em:

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

Terceiro método:

  1. Conecte-se de A a B, com "encaminhamento local" de $PORTXpara machine-c:22.

    machine-a$ ssh -f -N -L $PORTX:machine-c:22 machine-b
    
  2. Conecte de A a C no túnel, com "encaminhamento dinâmico".

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

    (Você pode omitir -f -Nse quiser usar o mesmo túnel também para conexões interativas.)

  3. Configure seu navegador para usar proxy em .localhost:$PORTY

gravidade
fonte
11
Incrível, obrigado! Eu gostaria de poder dar um +1 extra por torná-lo único!
precisa saber é o seguinte
2

Para o AWS EMR Sock Proxy, abaixo estão as etapas aplicadas. Supondo que temos dois cenários de lúpulo, como abaixo

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

E você já configurou o FoxyProxy no seu navegador. Ative-o antes de iniciar o antes de iniciar as etapas.

Etapa 1. Faça login na Jump Box

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

Etapa 2. Configure o túnel dinâmico na caixa Jump, assumindo que Key2 esteja presente lá.

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

Etapa 3. Abra um novo console no cliente ssh e configure o túnel.

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

kartik
fonte