SSH-Tunnel
Aus Fedorawiki.de
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:
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).
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.
