SSH Tunneling oder SSH Port Forwarding stellt eine Möglichkeit dar, Dienste von einem Server über eine Verschlüsselte Verbindung an einem Client zur verfügung zu stellen.

Lokales Port Forwarding

Als Erstes werde ich euch das lokale Port Forwarding über SSH vorstellen. Dies Benutze ich zum Beispiel, wenn ein Dienst auf dem Server nur auf localhost hört und ihr diesen aber auch am Client zur Verfügung haben wollt.

Die Syntax lautet wie folgt:

ssh -L <localip:>localport:destinationip:destinationport [-N] [-f] [Benutzer@]SSH_SERVER[:Port]
  • localip - Die lokale des Clients oder 127.0.0.1 falls es nur per localhost erreichbar sein soll
  • localport - Der Port über den der Dienst am Client präsentiert werden soll
  • destinationip - IP Adresse oder DNS Namen des Dienstes der getunnelt werden soll
  • destinationport - Port des Dienstes auf den dieser lauscht.
  • -N - dieser Parameter sagt ssh, dass der Client kein Kommando ausführen will (optional)
  • -f - Führ das Port forwarding im Hintergrund aus und blockiert die Konsole nicht (optional)

Hier ein Beispiel, welches euch einen entfernten Mysql Server der auf localhost hört an den Client Tunnel könnt.

ssh -L 127.0.0.1:3306:localhost:3306 -N -f root@10.20.30.40

Wenn alles geklappt hat, könnt ihr über den lokalen Mysql Client eine verbindung wie folgt aufbauen.

mysql -h localhost --protocol=tcp -u root -p

Falls eine Fehlermeldung erscheint, die wie folgt heißt:

ERROR 1698 (28000): Access denied for user ‘root’@‘localhost’

Könnt ihr das Problem wie im folgenden Artikel beschrieben behenben.