SSH-Tunnel

Aus Fedorawiki.de

Wechseln zu: Navigation, Suche


Dieser Artikel ist Teil der HOWTO Sammlung

Dieser Artikel soll einen Überblick über SSH-Tunnel liefern. Die Informationen zur Konfiguration eines SSH-Servers oder zur SSH Authentifizierung werden hier nicht behandelt.


Inhaltsverzeichnis

Was ist ein SSH-Tunnel

Wie der Name bereits erahnen lässt, handelt es sich hierbei um einen Tunnel, welcher mit SSH aufgebaut wird. Es wird also eine Verbindung zwischen zwei Punkten (Ports) durch SSH-Verschlüsselung aufgebaut. Nachfolgend wird das hier verwendete Szenario dargestellt:

SSH-Tunnel Überblick

Der Rechner 'secure_host' ist durch eine Firewall geschützt, d.h. aus dem Internet (u.a. durch den Rechner 'public_host') kann keine direkte Verbindung zum Rechner 'secure_host' aufgebaut werden. Es sind nur Verbindung aus dem internen Netzwerk heraus gestattet, eingehende Verbindungen sind nicht erlaubt (dargestellt durch einseitigen roten Pfeil).

Achtung Achtung: Diese hier beschriebene Technik kann dazu missbraucht werden, um Firewalls (Schutzmechanismen) zu umgehen! Falls Sie sich in einem Firmennetzwerk befinden, klären Sie bitte mit Ihren IT-Verantwortlichen, ob SSH-Tunnels erlaubt sind. Ein Missbrauch dieser Technik wird in den meisten Firmen strickt geahndet!


Lokale Ports weiterleiten

Hierbei wird mittels folgendem Befehl der lokale Port 50022 (von Rechner 'secure_host') zum Port 22 vom entfernten Rechner 'public_host' weitergeleitet:

ssh -g -N -L 50022:public_host:22 benutzer@public_host

Damit wird ein SSH-Tunnel von 'secure_host' nach 'public_host' aufgebaut. Wird nun ein SSH-Login auf den Rechner 'secure_host' am Port 50022 ausgeführt, (nur aus dem gesicherten Netzwerk hinter Firewall möglich) wird diese Anfrage direkt an 'public_host' weitergeleitet. D.h. das Login wird anstelle auf 'secure_host' auf 'public_host' durchgeführt. Die verwendeten Optionen sind: -g, damit nicht nur lokal eine Verbindung auf den Port 50022 möglich ist; -N damit keine Shell gestartet wird (es können keine Befehle auf public_host ausgeführt werden) und -L für das lokale Portforwarding.

Entfernte Ports weiterleiten

Analog dem Weiterleiten lokaler Ports verläuft das Weiterleiten entfernter Ports. Bei diesem Szenario wird der Remote-Port 50023 (Port 50023 auf entferntem Rechner 'public_host') auf den lokalen Rechner weitergeleitet/umgeleitet:

ssh -g -N -R 50022:localhost:22 benutzer@public_host

Bei einem SSH-Login auf den Rechner 'public_host' am Port 50023 wird somit direkt an den vermeintlich 'geschützten' Rechner 'secure_host' weitergeleitet.

Trotz der Firewall, welche eingehende Verbindungen blockiert, funktioniert ein direktes Login auf den Rechner 'secure_host' aus dem Internet. Dies wird möglich, da der sichere Rechner 'secure_host' eine ausgehende SSH-Verbindung (ein SSH-Tunnel) öffnet (was von der Firewall zugelassen wird), wobei diese Verbindung auf dem entfernten Rechner 'public_host' auf eingehende Verbindungen 'lauscht'.

Im Unterschied zum Weiterleiten lokaler Ports wird hier die option -R anstelle von -L verwendet.

Weitere Einsatzmöglichkeiten von SSH-Tunnels

Im obigen Beispiel wurde das Szenario einer SSH-Umleitung dargestellt. SSH-Tunnel können jedoch auch dazu verwendet werden, andere Protokolle (im speziellen unsichere Protokolle wie telnet, ftp, pop, imap) zu verschlüsseln.