/home/rw Ein Geek. Ein Leben. Ein $HOME. Zig Systeme.

22Jun/092

SSH: Über mehrere Tunnel ans Ziel

Eines der besten Features bei der Verwendung von SSH ist die Möglichkeit Tunnel aufzubauen. "Tunnel bauen" heisst, dass man über einen lokalen Port eine Anwendung auf einem entfernten Port ansprechen kann, wobei die Daten verschlüsselt via SSH über die Leitung gehen. So kann man mit

ssh -L 8182:localhost:80 user@remote

den lokalen Port 8182 auf den Port 80 des entfernten Hosts remote umleiten - ruft man im Webbrowser danach die Adresse http://localhost:8182 auf landet man auf Port 80 von remote. Praktisch z.B. um sich eine auf remote gehostete Webseite anzusehen.

Im Beispiel hat man es mit einem einfachen Tunnel zwischen zwei Rechnern zu tun. Ich stand aber vor der Herausforderung von Host A über Host B über Host C zu Host D zu kommen. Alle Hosts befinden sich dabei in separaten Subnetzen die nicht geroutet werden. Was nun?

In einem solchen Fall braucht man die SSH-Option -g. Aus der man-Page:

-g
Allows remote hosts to connect to local forwarded ports.

Um also den lokalen Port 8182 von Host A auf Port 80 von Host D zu legen hilft folgende Orgie:

user@host-a$ ssh -g -L 8182:localhost:10010 user@host-b
user@host-b$ ssh -g -L 10010:localhost:10020 user@host-c
user@host-c$ ssh -g -L 10020:localhost:80 user@host-d
user@host-d$

Jetzt kann man im Browser auf Host A die Adresse http://localhost:8182 aufrufen und spricht damit den Webserver auf Host D an. Wichtig dabei ist die SSH-Verbindung aufrecht zu erhalten, zur Not mit einem Dauerping. Schließt man die Verbindung ist auch der Tunnel nicht mehr vorhanden.

Eigentlich einfach, man muss es halt nur wissen. Genauere Informationen finden sich in der SSH-man-Page.

(Wen es interessiert was genau ich damit gemacht habe: Port 80 meiner virtualisierten Entwicklungsumgebung verfügbar machen. Von einem Linux-Rechner zum Router, vom Router zum MacBook Pro, von da aus zur auf dem MacBook Pro laufenden virtuellen Maschine.)

Kommentare (2) Trackbacks (0)
  1. Danke dir, hab die option -g bisher immer missachtet.

    Gruss

  2. Genau das, was ich gesucht habe! :-)


Leave a comment

(required)

Anti-spam protection

Wenn du kein Spammer bist: Trage die hervorgehobenen Buchstaben in das Feld ein.


Protected by Gab Captcha 2

Noch keine Trackbacks.