SSH Tunnel mit Linux erstellen

Möchtest du einen Tunnel von einem Linux Rechner aus aufbauen, bist du hier richtig. Möchtest du den Tunnel von Windows aus aufbauen, lies doch SSH Tunnel unter Windows erstellen

Aufbau eines SSH Tunnels unter Linux

Einen Tunnel (mit SSH) zu bauen, bedeutet, dass man eine Terminalverbindung auf einen anderen Rechner herstellt (den Tunnel) und über diese Verbindung (die verschlüsselt ist) wird zusätzlich eine weitere Verbindung geleitet. Dies ist dann der Tunnel-Benutzer. Wenn du wissen möchtest, was  eigentlich ein SSH-Tunnel ist, lies den Artikel „Was ist ein SSH-Tunnel?“

(Open)SSH ist in allen gängigen Linux und Unix Distributionen bereits installiert. Mehr Informationen findet man auf der Projekthomepage von OpenSSH.

An der Uni Rostock ist es beispielsweise nicht möglich, den Newsserver von außerhalb des Uninetzes zu erreichen. Man sucht sich deshalb einen Rechner der von außen erreichbar ist (und auf dem SSH läuft). Der Rest ist „Kleinkram“. (Info: Der Standardport auf dem ein SSH Server lauscht (SSH Port) ist Port 22.)

Wie geht nun das Erstellen des Tunnels?

ssh -L localport:zielrechner:dest_port -l username gateway

da wir unter Linux Ports unterhalb von 1024 nur als root binden dürfen, können wir den Standard-Newsport 119 nicht verwenden. Ich empfehle stattdessen 1119 (als localport) zu verwenden.
destserver ist unser Ziel, dort soll unser Tunnel hinführen, also der newsserver mit seinem newsport= unser destport = 119. Um dorthin zu gelangen, brauchen wir einen Endpunkt im Uninetz, in meinem Fall ist cksz.rz.uni-rostock.de = gateway.
ein Bsp. ist:

ssh -L 1119:news.uni-rostock.de:119 -l cb000 cksz.rz.uni-rostock.de

Die Verbindung wird erstellt und wir werden nach dem Passwort für User cb000 auf cksz gefragt. Ggf. will ssh vorher von uns wissen, ob er den Schlüssel des Hosts cksz als neu hinzufügen soll; wir wollen.

Die gesamte Übertragung vom lokalen Rechner zum Rechner „cksz…“ erfolgt verschlüsselt, der Rest nicht.

Ein anderes Beispiel

Nehmen wir an, man sitzt auf Arbeit und möchte seine privaten Emails lesen. Die Firmen-Firewall ist aber so eingestellt, dass Verbindungen auf IMAP Server (Port 143 oder 993) nicht durchgelassen werden. Nun kann man sich aber einen Tunnel bauen. Man benötigt einen Rechner im Internet der via SSH erreichbar ist. Über diesen Rechner (nennen wir ihn gateway.de) soll dann der Emailverkehr abgewickelt werden. Der Name des IMAP Servers sei imap.mydomain.de. Ferner wollen wir von gateway.de zum IMAP Server eine verschlüsselte Verbindung aufbauen, also den SSL-Port 993 benutzen.
Da man sich als user keinen Port < 1024 nehmen kann, benutzt man beispielsweise 1993 als lokalen Port.

Den Tunnel baut man also so auf:

ssh -L 1993:imap.mydomain.de:993 -l gateway-username gateway.de

Im Email Client gibt man nun localhost mit Port 1993 und SSL bzw TLS an. Fertig.

ssh -R baut einen Tunnel für den entfernten Rechner auf, funktioniert also in die entgegensetzte Richtung.

X11 Forwarding

Möchte man Programme mit grafischen Benutzeroberflächen, also Firefox oder Ähnliche, auf einem anderen Rechner ausführen und aber lokal die Fenster sehen, so geht dies mit

ssh -X

Man beachte das GROßE X! Ein kleines x deaktiviert das sogenannte X11-Forwarding, sprich die Weiterleitung der grafischen Benutzeroberfläche. Dies ist im Prinzip ein einfaches Tunneln einer X11-Verbindung.

Beispiel:

ssh -X server

stellt eine SSH Verbindung zu server her und leitet alle X11 Verbindungen zum lokalen Rechner um. Wird auf dem Server nun in der SSH Sitzung Firefox gestartet, so erscheinen die Fenster im lokalen Windowmanager.

Wenn X über einen dritten Rechner (Gateway) getunnelt werden soll, interessiert dich vielleicht X-Server über SSH tunneln.