SSH-Tunneling auf Windows-Computern

Mit diesem Artikel beschreibe ich grundlegend, was SSH-Tunnel überhaupt sind, wie sie funktionieren und wie man einen SSH-Server auf einem Windows-Computer einrichtet.

Was ist SSH-Tunneling?

SSH-Tunneling bezeichnet eine Technik, mit der man beliebigen Datenverkehr verschlüsselt über ein Netzwerk transportieren kann. Diese Technik wird benutzt, wenn eine Anwendung seine Daten unverschlüsselt über das Netzwerk übertragt und sensible Daten abgefangen werden könnten.

SSH-Tunneling ist zum Beispiel nützlich, wenn man VNC-Verbindungen über das Internet herstellen möchte, da das VNC-Protokoll standardmäßig unverschlüsselt ist. Aber es können auch beliebige andere Dienste über einen SSH-Tunnel bedient werden.

Verbindungs-Schema

SSH-Server einrichten

Zuerst brauchst du einen SSH-Server für Windows. Diesen bekommst du für unter http://www.freesshd.com. Nachdem du den Server installiert hast, musst du ihn einrichten. Dazu startest du freeSSHd und wechselst zum Reiter Users und fügst mit Add wie folgt einen neuen Benutzer hinzu:

Nachdem du einen Benutzer eingerichtet hast, wechselst du zum Reiter Tunneling, wo du folgende Einstellungen tätigst. Sollte der Dienst, den du erreichen möchtest, auf demselben Computer wie der SSH-Server laufen, aktivierst du noch die beiden anderen Checkboxen.

Nun sind alle Grundeinstellungen auf der Serverseite getroffen. Natürlich kannst du unter den anderen Reitern noch weitere Einstellungen tätigen, für unseren Zweck reichen diese Einstellungen aber schon. Sollte der Server hinter einer Firewall sitzen, musst du den Port 22 auf diesen weiterleiten.

Einrichtung auf Client-Seite

Damit nun auch gesichert auf den Server zugegriffen werden kann, muss auf der Clientseite PuTTY benutzt werden. PuTTY bekommst du unter http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html. Führe PuTTY aus und erstelle eine neue Konfiguration. Dazu gibst du unter Session die IP-Adresse oder den Hostname des Servers ein, vergibst eine Bezeichnung für die Session und klickst auf Save.

Danach gehst du auf Connection » SSH » Tunnels und richtest den Tunnel clientseitig ein. Dazu trägst du unter Source Port den Port ein, mit dem du dich von deinem Client-Rechner aus verbindest. Unter Destination trägst du dann die IP-Adresse und Port des Server-Dienstes ein, auf den auf der anderen Seite des Tunnels verbunden werden soll. In der Regel ist das derselbe Rechner und man gibt die IP-Adresse 127.0.0.1 gefolgt von : und dem Port des Dienstes ein.

In meinem Beispiel verbinde ich über einen SSH-Tunnel auf einen VNC-Server. VNC läuft standardmäßig über den Port 5900.

Nachdem der Tunnel eingerichtet ist, gehst du wieder auf Session, speicherst noch einmal die Einstellungen und klickst auf Open. Danach öffnet sich ein Befehlszeilenfenster und du wirst nach den Benutzerdaten gefragt, die bei der Einrichtung des SSH-Servers eingegeben worden sind. Sobald du dich eingeloggt hast, steht der SSH-Tunnel. Du musst das Fenster während der gesamten Nutzung des SSH-Tunnels offen lassen, ansonsten wird der SSH-Tunnel geschlossen.

Nun öffnest du das Client-Programm, mit dem du dich normalerweise verbindest, gibst aber nicht wie üblich die IP-Adresse des Servers an, sondern deine Loopback-Adresse (127.0.0.1) ein und verbindest.

Nun leitet PuTTY alle Daten, die auf den eingerichteten Port gehen um in den SSH-Tunnel. Die Daten fließen verschlüsselt durch den SSH-Tunnel und werden auf der anderen Seite an den angegebenen Host weitergeleitet.