SSH als Socken-Proxy über mehrere Hosts

21

Kann mit SSH folgendes erreicht werden.

Es sind drei Maschinen beteiligt:

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

Ich möchte einen SOCKS-Proxy einrichten. Ich möchte zu Hause auf meinem lokalen Computer surfen können, so wie ich im Labor bin. Dies ist auf einige Websites zurückzuführen, die nur über die öffentliche IP-Adresse der Schule erreichbar sind.

Ich möchte also einen SOCKS-Proxy auf Host C ausführen. Es gelingt mir jedoch nicht, ihn von Host A aus zum Laufen zu bringen.

Ich verbinde mich mit dem Gateway und vom Gateway aus verbinde ich mich mit der Workstation. Das Gateway kann den Datenverkehr jedoch nicht ordnungsgemäß vom und zum Proxy übertragen.

Wie kann ich das machen?

Sébastien
quelle

Antworten:

28

Drei leicht unterschiedliche Methoden. (Ersetzen Sie $ PORTX und $ PORTY durch Portnummern Ihrer Wahl.)

Erste Methode: ProxyCommand

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

Zweite Methode:

  1. Stellen Sie eine Verbindung von A nach B mit "lokaler Weiterleitung" von $PORTnach her .localhost:$PORT

    machine-a$ ssh -L $PORT:localhost:$PORT machine-b
    
  2. Stellen Sie eine Verbindung von B nach C mit aktivierter dynamischer Weiterleitung her.

    machine-b$ ssh -f -N -D $PORT machine-c
    
  3. Konfigurieren Sie Ihren Browser für die Verwendung von Proxy unter .localhost:$PORT

Die Schritte 1 und 2 können wie folgt zusammengefasst werden:

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

Dritte Methode:

  1. Stellen Sie eine Verbindung von A nach B mit "lokaler Weiterleitung" von $PORTXnach her machine-c:22.

    machine-a$ ssh -f -N -L $PORTX:machine-c:22 machine-b
    
  2. Stellen Sie über den Tunnel eine Verbindung von A nach C mit "dynamischer Weiterleitung" her.

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

    (Sie können weglassen, -f -Nwenn Sie denselben Tunnel auch für interaktive Verbindungen verwenden möchten.)

  3. Konfigurieren Sie Ihren Browser für die Verwendung von Proxy unter .localhost:$PORTY

Grawity
quelle
1
Erstaunlich, danke! Ich wünschte, ich könnte zusätzlich +1 geben, um es zu einem Einzeiler zu machen!
Jwbensley
2

Im Folgenden finden Sie die angewendeten Schritte für AWS EMR Sock Proxy. Angenommen, wir haben zwei Hops-Szenarien wie folgt

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

Und Sie haben bereits FoxyProxy in Ihrem Browser eingerichtet. Aktivieren Sie es, bevor Sie die Schritte ausführen.

Schritt 1. Melden Sie sich bei Jump Box an

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

Schritt 2. Richten Sie einen dynamischen Tunnel in der Jump-Box ein, vorausgesetzt, Key2 ist dort vorhanden.

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

Schritt 3. Öffnen Sie eine neue Konsole auf dem SSH-Client und richten Sie den Tunnel ein.

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

kartik
quelle