Autostart OpenSSH mit Public Keys unter Windows XP und Windows 7 mit cygwin und Userrechten

Posted on 9. August 2013 Comments

Diese YouTube Video hat mir sehr geholfen: Install OpenSSH in Windows 7

Die Rechte waren allerdings schon gesetzt und sie vergisst einen Befehl. Wer sich das nicht alles anhören möchte kann einfach auch die Anleitung(lokale Kopie) befolgen.

update: Es könnte sein, dass /var/empty muss dem root/Administrator gehören muss:

chown Administrator /var/empty

Jetzt gibt es 2 Probleme:

1. Es mangelt an Userrechten zum Starten des Services mit dem User-Account

2. Mit dem vorinstallierten Dienst funktioniert aufgrund fehlender Rechte das PublicKey Verfahren zur Anmeldung nicht.
Die Lösung ist, den Windows Dienst nicht zu verwenden. Dazu lässt sich mit dem Befehl /usr/sbin/sshd -D der SSH-Daemon starten und dann funktionieren auch alle in /home/username/.ssh/authorized_keys eingetragenen Public Keys(Das Verzeichnis muss vorher erstellt werden). Wenn man diesen Schritt vergisst bekommt man ein Permission denied. Natürlich muss man auch noch in /etc/sshd_config die Parameter RSAAuthentication yes und PubkeyAuthentication yes einkommentieren bzw. PasswordAuthentication no
einstellen.

Nun muss man also diesen Befehl irgendwie als Dienst installiert bekommen. Leider muss man den Dienst als Administrator laufen lassen. Dabei helfen die Dateien srvany.exe und instsrv.exe (Alternative, s.u.), die man bei Microsoft findet. Davon ausgehend, dass sich die beiden Dateien in C:\cygwin befinden kann man einen Dienst folgendermaßen installieren:

C:\cygwin\instsrv.exe opensshd c:\cygwin\srvany.exe

Dann habe ich die Datei C:\cygwin\startopensshd.cmd noch erstellt und folgendes reingeschrieben:

C:\cygwin\bin\mintty.exe -e "/usr/sbin/sshd.exe"

mintty ist die Shell von Cygwin, die man bekommt, wenn man auf dem Desktop das Symbol anklickt.

Unter dem Registry-Key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\opensshd findet man erstellt man jetzt den Key Parameters. Dort erstellt man einen String(REG_SZ) mit dem Namen Application. Dieser enthält den Pfad zu C:\cygwin\startopensshd.cmd.

Damit jetzt auch unter User der Service mit Administrator-Rechten gestartet wird, muss man den Service nicht mit dem lokalen Account starten, sondern als Administrator unter der Diensteverwaltung(services.msc im cmd-Fenster) den Administrator eintragen:

opensshd_service_adminkonto

 

Bei Windows 8.1 funktioniert der Ansatz mit instsrv.exe und srvany.exe nicht mehr. Also habe ich den Dienst unter services.msc wieder deinstalliert bzw. deaktiviert.

Danach kann man mit dem NSSM(Non-Sucking Service Manager) dieselbe startopensshd.cmd von oben als Dienst installieren. Vorher muss man die nssm.exe in den gewünschten(z.B. C:\cygwin) Ordner verschieben, weil sie ja von dem Service referenziert wird.

nssm install opensshd

Es öffnet sich ein Fenster, in dem die startopensshd.cmd eingetragen werden kann.

Gerade auf diesem Weg sollte man aber zusehen, dass man ordentliche Updates hinbekommt, sowohl von cygwin als auch von OpenSSH.

update: wenn man die 64-Bit Version installiert funktioniert das auch, allerdings heißt das Verzeichnis dann C:\cygwin64.

Flattr this!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.