So entfernen Sie QueryServiceStatus: Win32-Fehler 1062, wenn Sie versuchen, sshd auf Cygwin zu starten?

7

Ich habe Cygwin und sshd unter Windows 7 installiert, kann es aber nicht zum Laufen bringen.

Ich habe den Leitfaden von http://www.noah.org/ssh/cygwin-sshd.html befolgt, aber ich bekomme immer noch:

$ cygrunsrv -S sshd
cygrunsrv: Error starting a service: QueryServiceStatus:  Win32 error 1062:
The service has not been started.

Konfigurationsdetails:

  • Windows 7 in einer Domäne, die mit einem Domänenbenutzer ausgeführt wird, der über lokale Administratorrechte verfügt
  • netstat -a -b meldet, dass auf Port 22 nichts ausgeführt wird
  • C:\cygwin\var\log\sshd.log ist leer
  • Nachdem ich cygwin und sshd installiert habe, starte ich ssh-host-config -y
  • Es wurde bereits versucht, ein SYSTEM-Konto zu den 3 Verzeichnissen hinzuzufügen, keine Änderung.
  • Bereits versucht ein vollständiger Systemneustart, keine Änderung

Update: Windows-Protokolle beschweren sich über Possible duplicate cygwin1.dll

Sorin
quelle
Hast du das schon gelöst? Ich habe ähnliche Probleme?
Lord Loh.
Ich habe festgestellt, dass ich diesen Fehler reproduzieren kann, indem ich zur Anmelderegisterkarte services.msc cygwin sshd gehe und zwischen dem lokalen Konto (cyg_server) und dem System wechsle. jedes Mal , wenn es eine Änderung, braucht es ein ssh-host-config -y von einem Kommando prompt über einen Rechtsklick auf Als Administrator ausführen gestartet oder von einem runas /user:Administrator c:\windows\system32\cmd.exe Das ssh-host-config -ymuss den net start sshd / cygrunsrv ES sshd vorangestellt werden . Und wenn es nicht von einem 'Als Administrator ausführen ..' funktioniert, versuchen Sie es von einer Runas / Benutzer: ... cmd-Eingabeaufforderung.
Barlop

Antworten:

7

Vielen Dank, Ihr Update war die Lösung - für alle anderen gibt es ein Rezept Nr. 3 gegen Win32-Fehler 1062 beim Cygwin-Start:

1) Überprüfen Sie das Anwendungsereignisprotokoll, um festzustellen, ob dort Ereignisse auf "Information" -Ebene vorhanden sind, z. B.: "Sshd: PID: Mögliches Duplikat cygwin1.dll:"

Suchen Sie das alberne Duplikat an der angegebenen Stelle und benennen Sie es um oder entfernen Sie es irgendwie vom Pfad. Meins war unter "/ cygdrive / c / Programme (x86) /socat-1.7.2.0/cygwin1.dll".

Boo, socat! Anscheinend beschäftigen sie sich mit 3PP . Ich wusste nicht einmal, dass socat auf meinem System ist, anscheinend war es Teil einer anderen Installation. Ich habe 2 andere Personen in den Cygwin-Mailinglisten gefunden, die unter dem Duplikat-DLL-Problem gelitten haben.

Algomorph
quelle
Wirklich, es könnten viele, viele Dinge sein, die aber auch Konfigurationsprobleme haben und wer weiß was - am besten /var/log/sshd.log
angeschaut
2

Vielen Dank @HopelessN00b, @user155148, @Algomorpheine Kombination aus Ihren Lösungen hat ich gehen.

Das Kreuz

Ich hatte zwei Probleme:

  1. Doppelte cygwin1.dllDateien.
  2. /var/log/sshd.log: "Benutzer sshd zur Trennung von Berechtigungen existiert nicht"

Mein Fix

  1. Beschäftige dich mit den blutigen doppelten Gurkendateien:

    cd /cygdrive/c/Program\ Files\ \(x86\)/cwRsync/bin
    mv cygwin1.dll cygwin1_.dll
    
  2. Ein Benutzer wurde /etc/passwdhinzugefügt, indem die folgende Zeile bearbeitet und hinzugefügt wurde:

    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    

Beachten Sie, dass der Benutzername 'sshd' von stammt /var/log/sshd.log.


GAD, was für ein Schmerz im Arsch das ist!

Ich habe eine andere Ressource gefunden, diese etwas ausführlicher und von Oracle

Kurz gesagt, wenn Sie greif haben:

  1. Führen Sie jeden dieser Schritte EINS aus. BEIM. A. BLUTIG. ZEIT.
    ... das
    Problem cygrunsrv -S sshdbeheben ..... rennen
    ....... reichlich fluchen
  2. Überprüfen Sie die Windoze-Ereignisprotokolle.
    ... Haben Sie doppelte DLL-Dateien?
  3. Schauen Sie sich an /var/log/sshd.log
    ... Haben Sie /etc/passwdProbs?
Misterich
quelle
1

Ich hatte (fast) den gleichen Effekt und eine analoge Lösung: Das Anwendungsprotokoll zeigte eine doppelte Datei

Mögliches Duplikat cygwin1.dll: /cygdrive/c/dakota/bin/cygwin1.dll ..

von meiner Dakota Installation. Das Umbenennen dieser DLL hat den Trick getan. Vielen Dank!

user155148
quelle
1

Ich hatte ein Problem mit der Trennung von Privilegien. In diesem Fall wurde /etc/passwddas Problem durch Hinzufügen einer Zeile zur Datei behoben.

sshd: x: 74: 74: Berechtigungsgetrenntes SSH: / var / empty / sshd: / sbin / nologin

CsBalazsHungary
quelle
1

Für mich stellte sich heraus, dass es sich um ein Kompatibilitätsproblem handelte. Ich habe versucht, es in Win7 auszuführen. Behoben durch Klicken mit der rechten Maustaste auf die Datei im Explorer, Aufrufen der Kompatibilität und Festlegen der Kompatibilität mit Windows Server 2003. Danach funktionierte einwandfrei.

Hier die Lösung gefunden:

http://h30499.www3.hp.com/t5/Windows-Server-2008/Installing-OpenSSH-on-Windows-server-2008/td-p/4777839#.U0cmzle2wuI

Beachten Sie, dass mein Problem speziell mit dem Versuch zusammenhängt, OpenSSH Server zu starten, der vermutlich eine Light-Version von Cygwin verwendet.

Rob Penridge
quelle
0

Die Antwort / etc / passwd war sehr knapp, aber die UID 74 war spezifisch für seine Installation.

Verwenden Sie stattdessen diesen Befehl cygwin, um die richtige UID abzurufen.

mkpasswd -l -u sshd >> / etc / passwd

rkelleycook
quelle
0

Dies scheint durch JEDEN Fehler mit dem sshd-Server verursacht worden zu sein - in meinem Fall, der auf Dauerwellen gesperrt ist /etc/ssh_host_rsa_key- sollte 0600 sein. Schauen Sie rein /var/log/sshdoder ähnlich.

user176915
quelle
0

Auf einem Client-System fand ich ein Programm namens RDPlus (www.rdplus.com.au), das eine SSH-Tunneloption auf Port 22 ausführte, die ich deaktivieren musste, bevor Cygwin sshd gestartet werden konnte. In CMD.EXE hat 'netstat -abo' auf diesen Prozess hingewiesen, nachdem im Anwendungsereignisprotokoll der Fehler 'Bindung an Port 22 auf 0.0.0.0 fehlgeschlagen' festgestellt wurde. Die Option 'o' zeigt die PID an, die im Task-Manager zu finden ist.

Um dies zu deaktivieren, führen Sie das RDPlus-Verwaltungstool aus, wechseln Sie zur Registerkarte Web und deaktivieren Sie das SSH-Tunneling.

Greg Duffy
quelle
0

Jemand hat dies auf einer anderen Stack Exchange-Frage gepostet, aber falls Sie eine leere Datei haben /var/log/sshd, sollten Sie es versuchen /usr/sbin/sshd. Dadurch werden die Fehler ausgegeben, die Sie nicht im Protokoll erhalten haben.

Für mich half es, die sshd-Dienste zu deinstallieren, ssh-host-config neu zu starten und dann erneut auszuführen, während ich diese Anweisungen befolgte ( ls -l /var/etcsagte mir, dass der leere Ordner bei meinem ersten Versuch im Besitz von SYSTEM war, was sinnvoll ist, da ich folgte Dieses Tutorial zuvor. Auf diese Weise erhielt ich jedoch den Fehler "/ var / empty muss im Besitz von root sein und darf keine Gruppe oder Welt beschreibbar sein".

Peter Jas Cook
quelle
0

Ich habe Cntlm(NTLM-Authentifizierungs-Proxy) verwendet, der auch enthält cygwin1.dll. Die Vermeidung einer solchen Duplizierung hat das Problem behoben.

Turm
quelle
0

Ich benutze ein lokales Konto, cyg_server, um sshd auszuführen. Ich musste die Berechtigungen für / var / empty auf 700 und den Eigentümer auf cyg_server setzen, obwohl in der Fehlermeldung angegeben wurde, dass der Eigentümer root sein muss.

Ich habe auch die Nachricht des Tages (/ etc / motd) entfernt, aber ich denke nicht, dass dies unbedingt notwendig ist. Es stört manchmal meine Automatisierung.

FWIW, cyg_server ist ein streng lokaler Benutzer mit Administratorrechten und ohne Active Directory-Definition. Es ist in der Registrierung und in / etc / passwd aufgeführt.

Ich musste auch die Rechte von cyg_server bearbeiten, nachdem ich ein aktuelles Cygwin-Update akzeptiert hatte.

cygrunsrv -E sshd
editrights -a SeAssignPrimaryTokenPrivilege -u cyg_server
editrights -a SeCreateTokenPrivilege -u cyg_server
editrights -a SeTcbPrivilege -u cyg_server
editrights -a SeServiceLogonRight -u cyg_server
cygrunsrv -S sshd

hat sshd gestoppt, die Rechte des Dienstkontos geändert und sshd neu gestartet.

So werden die Rechte nach dieser kurzen Sitzung festgelegt.

bash-4.4$  editrights -u cyg_server -l
SeAssignPrimaryTokenPrivilege
SeCreateTokenPrivilege
SeTcbPrivilege
SeServiceLogonRight
SeDenyRemoteInteractiveLogonRight
bash-4.4$ 
DDay
quelle