SSH jako skarpety proxy przez wiele hostów

21

Czy dzięki SSH można osiągnąć następujące cele?

W grę wchodzą trzy maszyny:

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

Chcę skonfigurować proxy SOCKS. Chcę móc surfować na moim lokalnym komputerze w domu, tak jak w laboratorium. Wynika to z faktu, że niektóre witryny są dostępne tylko z publicznego adresu IP szkoły.

Chcę więc uruchomić serwer proxy SOCKS na hoście C. Ale nie udaje mi się, aby działał z hosta A.

Łączę się z bramą, a z bramy łączę się ze stacją roboczą. Ale nie mogę zmusić bramy do prawidłowego przesyłania ruchu z i do serwera proxy.

W jaki sposób mogę to zrobić?

Sébastien
źródło

Odpowiedzi:

28

Trzy nieco inne metody. (Zamień $ PORTX i $ PORTY na wybrane numery portów).

Pierwsza metoda: ProxyCommand

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

Druga metoda:

  1. Połącz z A do B, z „lokalnym przekazywaniem” $PORTdo .localhost:$PORT

    machine-a$ ssh -L $PORT:localhost:$PORT machine-b
    
  2. Połącz z B do C z włączonym „dynamicznym przekazywaniem”.

    machine-b$ ssh -f -N -D $PORT machine-c
    
  3. Skonfiguruj przeglądarkę, aby korzystała z serwera proxy w .localhost:$PORT

Kroki 1 i 2 można podsumować w celu:

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

Trzecia metoda:

  1. Połącz z A do B, z „lokalnym przekazywaniem” $PORTXdo machine-c:22.

    machine-a$ ssh -f -N -L $PORTX:machine-c:22 machine-b
    
  2. Połącz tunel z punktu A do punktu C z „dynamicznym przekazywaniem”.

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

    (Możesz pominąć, -f -Njeśli chcesz używać tego samego tunelu również do połączeń interaktywnych).

  3. Skonfiguruj przeglądarkę, aby korzystała z serwera proxy w .localhost:$PORTY

grawitacja
źródło
1
Niesamowite dzięki! Chciałbym dać dodatkową +1 za uczynienie z niej jednego liniowca!
jwbensley
2

W przypadku AWS EMR Sock Proxy, poniżej podano zastosowane kroki. Zakładając, że mamy dwa scenariusze chmielu, jak poniżej

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

I już skonfigurowałeś FoxyProxy w przeglądarce. Aktywuj go przed rozpoczęciem przed rozpoczęciem kroków.

Krok 1. Zaloguj się do Jump Box

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

Krok 2. Skonfiguruj tunel dynamiczny w polu Jump, zakładając, że Key2 jest tam obecny.

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

Krok 3. Otwórz nową konsolę na kliencie ssh i skonfiguruj tunel.

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

kartik
źródło