Linux – SSH Tunnel erstellen

Ein SSH Tunnel ist eine Port Weiterleitung eines lokalen Ports zu einem anderen (oder gleichen) Port auf dem Remote Server. Die Weiterleitung erfolgt über die SSH Verbindung in einem sogenannten Tunnel.
Das Ganze ist nicht auf bestimmte Ports oder eine Anwendungen begrenzt sondern kann beliebig eingesetzt werden. Grundvorraussetzung zum Aufbau des SSH-Tunnels ist eine SSH-Verbindung zum Zielserver.

Infos wie das Tunneling genau funktioniert gibts recht gut erklärt auf der Wikipedia-Seite.

SSH Tunnel aufbauen

Der Aufbaus des Tunnels erfolgt nach folgenden Muster:

ssh benutzer@entfernterHost -L <lokalerPort>:<Host>:<entfernterPort>

benutzer@entfernterHost ersetzen wir durch die Logindaten am Zielserver. Der Parameter -L <lokalerPort>:<Host>:<entfernterPort> ist für das Binding verantwortlich. Hier definieren wir den Port auf unserem lokalen System und den Port für die Weiterleitung auf dem Zielserver.

Für den ersten Test können wir dieses Kommando mit unseren Daten ausführen. Anbei mal ein Beispiel

ssh tunnel@192.168.56.101 -L 2000:127.0.0.1:80

SSH Tunnel testen

Nach der Eingabe unseres Passworts auf dem Zeilserver sollte der Tunnel stehen. Wir können dies ganz einfach mit unserem Browser testen. Wir stellen eine Verbindung zu 127.0.0.1 und Port 2000 her. Der Port 2000 wird nun per SSH-Tunnel auf den Server 192.168.56.101 Port 80 weitergeleitet. So erhalten wir die Default-Seite des Webservers auf dem Zielserver.

Verbindung ohne SSH Tunnel
Verbindung ohne SSH Tunnel
Verbindung mit SSH Tunnel
Verbindung mit SSH Tunnel

Nach dem Beenden der SSH Verbindung wird der Tunnel wieder geschlossen. Will man die Verbindung im Hintergrund öffnen kann dies mit dem Parameter -f geschehen. Weiterhin ist es sinnvoll den Parameter -N hinzuzufügen. Mit diesem verbieten wir das Ausführen von externen Kommandos.

ssh benutzer@entfernterHost —f -N -L <lokalerPort>:<Host>:<entfernterPort>
ssh tunnel@192.168.56.101 -f -N -L 2000:127.0.0.1:80

Nach Eingabe des Passwort verschwindet der SSH-Tunnel in den Hintergrund und kann weiterhin genutzt werden.

Weitere Infos findet man in den ManPages zu SSH oder auf der openssh-Webseite.

2 Kommentare

  1. Hallo, Super Artikel. Vielen Dank auch für die Erläuterungen zu den einzelnen Parametern. Gibt es eine Möglichkeit, dass das Passwort automatisch beim Aufruf eingeben wird bzw. nicht von Hand eingegeben werden muss?
    Beispiel:
    ssh benutzer:SSH-PASSWORD@entfernterHost —f -N -L ::
    ssh tunnel:PASSWORD@192.168.56.101 -f -N -L 2000:127.0.0.1:80

    1. Hallo, das geht ganz einfach. Du kannst per SSH die ‚Key-Based Authentication‘ verwenden. Da identifiziert Du Dich mit Deinem ssh-Key und brauchst kein Passwort beim Login per SSH angeben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.