Normalfall
Folgenden Befehl ausführen:
ssh -L 3006:localhost:3306 -l USERID ZIELSERVER
Baut einen Tunnel vom lokalen System Port 3006 auf zum ZIELSERVER Port 22, vom ZIELSERVER wird eine Verbindung zu localhost:3306 aufgebaut.
Also localhost:3006 ==> ZIELSERVER localhost:3306 (Die Angabe localhost:3306 ist hierbei aus Sicht des ZIELSERVERs zu betrachten)
Abweichender ssh-Port
Ist am Zielserver der ssh-Port nicht Standard (Port 22) sondern abweichend z.B. 42 so sieht das Beispiel wie folgt aus:
ssh -p 42 -L 3006:localhost:3306 -l USERID ZIELSERVER
Sonderfall ipv4 oder ipv6 ?
Um zu gewährleisten, dass zwingend ein bestimmtes Netzwerkprotokoll verwendet wird kann man mit den Optionen -4 = ipv4 oder -6 = ipv6 ein Protokoll vorgeben.
Je nach Konfiguration des Systems kann es sonst vorkommen, dass z.B. ein ipv6-Port versucht wird obwol der gewünschte Port nur ipv4 anbietet.
ssh -4 -L 3006:localhost:3306 -l USERID ZIELSERVER
Temporärer ssh-Tunnel innerhalb eines shell-Scripts
Aufbau des Tunnels im Hintergrund, z.B. in einem Shell-Script.
Durch den Parameter -fN :
ssh -fN -L 3006:localhost:3306 -l USERID ZIELSERVER
Remote Port Forwarding
Das Ganze kann auch anders herum funktionieren.
Anwendungsfall wäre, man versucht z.B. von einem lokalen System einem entfernten Server einen Port anzubieten.
Dieser Fall ist immer dann gegeben wenn man zuhause sitzt und der lokale Rechner nicht aus dem Internet erreicht werden kann.
Hier können die o.g. Beispiel 1:1 übernommen werden, wobei der Parameter "-L" in diesem Fall gegen "-R" auszutauschen ist.
Für die o.g. Beispiel würde das bedeuten, dass der Port 3006 auf dem Server mit meinem lokalen Port 3306 verbunden wird.
ssh -R 3006:localhost:3306 -l USERID ZIELSERVER