SSH unter Windows mit FreeSSHd

Aus ITwiki
Wechseln zu: Navigation, Suche

Viele werden jetzt sagen: "Alter, kauf dich Linux!" - Ja, nein... Ich will SSH unter Windows zum Laufen bekommen. Ich hatte den Fall, dass ich eine externe Zugriffsmöglichkeit auf einen Rechner im LAN benötigte, ohne groß etwas mit VPN aufzuziehen. Die MS-Freaks werden nun sagen: "Alter, nimmst du PPTP, is bei Windows dabei!" - Ja, nein... ist mir zu unsicher :-) Eine Möglichkeit wäre noch OpenVPN gewesen, aber hier hat man a) zu viel "Linux auf Windows" und b) wollt ich es etwas "Handlicher" haben.

Vorbereitungen

Ich entschied mich für die kostenlose SSH-Variante FreeSSHd, die es hier zum Runterladen gibt. Das Programm läuft bei mir sogar unter Windows 7 64 Bit, daher kann ich das Produkt empfehlen - es ist zudem leicht zu konfigurieren und man braucht keine Parameter-Kenntnisse über die sshd.conf

Als Client-Software verwendet man klassischerweiße den Opensource-Client Putty. Mit diesen beiden Produkten kann man dann eine sichere SSH-Verbindung aufbauen und mittels SSH-Portforwarding auf diverse Services - etwa auf RDP - zugreifen.

Umsetzung

Da ich auf einen einzigen Rechner im LAN drauf musste, installierte ich auf dieser Maschine den FreeSSHd-Server. Wichtig an dieser Stelle: arbeite während der Konfiguration mit abgeschaltenem Windows-Dienst, stelle also sicher, dass der FreeSSHd-Dienst NICHT läuft, sondern starte SSH über die GUI, über welche auch die Konfiguration vorgenommen wird. Bei mir hatte ich immer die Probleme, dass die gemachten Einstellungen erst nach einem Dienstneustart gezogen wurden - und interessanterweiße das auch nicht immer :-) Die grafische Oberfläche ist sehr übersichtlich und leicht zu bedienen. Da ich reines Interesse am Portforwarding hatte, legte ich unter dem Reiter Users einen Benutzer an und erteilte ihm lediglich die Berechtigung Tunnel. Unter Logging sollte man die Protokollierung einschalten, um etwa Probleme etc. leichter ermitteln zu können. Im Reiter Tunneling stelle dann Allow local port forwarding ein und aktiviere zudem die Option but forward only to localhost (127.0.0.1). Wenn man nun über den Reiter Server status den SSH-Dienst (neu) startet, kann man sich auch schon innerhalb des LANs zum SSH-Server verbinden. Willst du über's Internet auf den Rechner, sollte auf dem Internetrouter noch ein Portforwarding des Ports TCP 22 zum internen Rechner, auf welchem der SSH-Server läuft, eingerichtet werden - dann klappt auch der Connect von extern. Loggt man sich mittels Putty nun erfolgreich ein, erscheint eine Meldung This service is prohibited. Dies hat damit zu tun, da ich nur Tunneling für den User aktiviert habe, man kann also nur über geforwardede Ports auf Ressourcen des Zielrechners (z. B. VNC) zugreifen. Also: Putty beenden, nochmals aufrufen und folgende Forwarding-Einstellungen vornehmen, um z. B. sich dann mit VNC zum Rechner zu verbinden:

Freesshd01.png

Kurz erklärt, was hier passiert: ich lege fest, wenn ich am Client (also der Rechner, an dem Putty aufgerufen wird) auf den lokalen Port 59000 zugreife, werden die Pakete über den SSH-Tunnel ans Ziel 127.0.0.1 (dem Putty-Server auf der anderen Seite also), Port 5900 (der VNC-Port) geleitet. Wenn ich den VNC-Viewer am Client starte, mich zu localhost::590000 verbinde (die zweifachen Doppelpunkte sind bei manchen VNC-Clients notwendig, müssen angegeben werden - ein einfacher Doppelpunkt beziffert ein Linux-Display...), werden die Pakete über den SSH-Tunnel zum Host 127.0.0.1, Port 5900 geleitet. Hier horcht der VNC-Server und schwupp: ich bin am Remotesystem drauf! Dank SSH wird der Traffic verschlüsselt - tolle Sache, einfach, aber effektiv. Natürlich könnte man jetzt hergehen und weitere Portforwardings konfigurieren, z. B. dass der Source Port 590001 zu 192.168.0.55:5900 - einem Client im Remote-Netzwerk - weitergeleitet wird. Man kann auch den RDP-Port 3389 angeben - was man will, wie man will, hier stehen alle Möglichkeiten offen. Beachte aber: wenn in FreeSSHd unter Tunneling die Option "but forward only to localhost (127.0.0.1)" gesetzt ist, kommt man zu 192.168.0.55 nicht :-) In dem Fall muss die Einstellung natürlich entsprechend modifiziert werden.

Sobald FreeSSHd läuft, die GUI beenden, Rechtsklick auf dem Symbol im Systray und Unload wählen. Jetzt kann der FreeSSHd-Dienst gestartet werden und sollte genauso funktionieren, wie wenn der Dienst über die GUI gestartet worden wäre.

Nützliche Links