SSH Port forwarding – Wie funktioniert Portweiterleitung?

Wie funktioniert SSH Port forwarding (Portweiterleitung via SSH)?

Manchmal möchte ich einen Port (einen TCP Port um genau zu sein) einem anderen Rechner verfügbar machen. Mit Hilfe von SSH kann (sofern erlaubt) eine Verbindung weitere Verbindungen aufnehmen. Diesen Vorgang nennt man SSH Tunnel. Da nun ein lokaler Port auf einem anderen Rechner zur Verfügung gestellt wird oder umgekehrt, spricht man von SSH Port forwarding (auf Deutsch: Portweiterleitung). Dieses Port forwarding ist nicht mit der gleichnamigen Einstellung in Routern wie beispielsweise der Fritz!Box. (Dies heißt dort auch gern statische Portfreigabe. Siehe Fritz!Box Hilfe zu Portfreigaben)

Man unterscheidet lokale und ferne Portweiterleitung (local and remote port forwarding). Die lokale Weiterleitung mach folgendes ein TCP Port eines entfernten Rechners wird lokal verfügbar gemacht. Die ist der Klassiker unter den SSH Tunneln. (Siehe auch SSH Tunnel mit Linux erstellenSSH Tunnel unter Windows erstellen)

Beispiel local SSH Port forwarding

ssh -L localport:zielrechner:dest_port -l username

Der Port dest_port auf zielrechner wird auf dem lokalen Rechner auf port localport verfügbar gemacht.
Ich habe beispielsweise auf Linuxservern im Internet Datenbanksoftware installiert. Diese ist aber nur lokal erreichbar, d.h. auf dem Linuxserver selbst. Damit ich diesen nun bequem von zuhause administrieren kann, leite ich mir diesen Port einfach von zuhause auf den Linuxserver um.

ssh -L 3306:linuxserver:3306 -l username

Nun kann ich mich mit meinem MySQL Client (Datenbanksoftware) lokal an Port 3306 verbinden. Dieser wird dann über die SSH Verbindung an den Linuxserver weitergeleitet. Die Datenbanksoftware auf dem Linuxserver „glaubt“ dann, dass die Verbindung lokal ist, d.h. vom Linuxserver ausgeht.

mysql -h localhost -p 3306

Weitere Beispiele

Siehe auch SSH Tunnel mit Linux erstellen und SSH Tunnel unter Windows erstellen.