SSH-Tunnel HOWTO

Dieses HOWTO beschreibt, wie man einen ssh-Tunnel über einen Gateway zum Zielrechner aufbaut um zum Beispiel svn darüber laufen zu lassen. Das Verfahren wird manchmal auch "port forwarding" genannt.

Angenommen ein subversion-Repository war früher im Internet via https erreichbar, doch der Betreiber entschied sich dazu nur noch anfragen aus dem (entfernten) Netzwerk zuzulassen. Wenn man sich nicht bereits in diesem Netz befindet würde man sich üblicherweise per VPN ins entfernte Netz einfwählen und wie gewohnt weiterarbeiten. Möchte man allerdings nicht extra für einen Dienst ein VPN betreten, kann man diesen Dienst auch über ssh tunneln.

Tunnel aufbauen

Der Befehl

$ ssh -L lokalerport:zielrechner:zielport gatewaylogin@gateway

erzeugt nach erfolgreichem login auf dem Gateway einen Tunnel. Alle anfragen an port "lokalerport" auf dem lokalen Rechner, werden nun über den Gateway zum Zielrechner an den Zielport geleitet.

Am konkreten Beispiel leiten leiten wir alle lokalen Anfragen an den Port 7777 über den gateway (der zu dem wir ssh Zugang haben und der sich im selben Netz wie der svnserver befindet) an den https-Port des svnservers weiter:

$ ssh -L 7777:svnserver:443 user@gateway

Nun ist man auf dem Tunnel eingeloggt und der Tunnel besteht solange bis man sich wieder ausloggt.

Arbeitskopie anpassen

Da der svnserver jetzt nicht mehr über "https://svnserver/", sondern über "https://localhost:7777/" erreichbar ist, müssen bereits vorhandene Arbeitskopien natürlich angepasst werden. Dazu wechselt man ins Verzeichnis der Arbeitskopie und "schaltet" von der alten URL zur neuen um:

$ svn switch --relocate https://svnserver/pfad/zu/repo https://localhost:7777/pfad/zu/repo

Ein anschließendes

$ svn up

Sollte nach ein paar eventuellen Fragen über den "neuen" Host die Arbeitskopie aktualisieren.

SOCKS proxy

Eine Alternative ist der SOCKS proxy.

$ ssh -D 8080 gateway

Erzeugt einen SOCKS proxy der auf dem lokalen Port 8080 lauscht. Konfiguriert man z.B. den Web Browser in den Proxy Einstellungen, den Proxy localhost:8080 zu benutzen, geht der komplette Browser Verkehr durch die SSH-Verbindung über den gateway.