Ich habe eine Windows 8-Dev-Vorschau (nicht sicher, ob sie relevant ist, aber ich hatte noch nie Probleme mit w7) und ich versuche, ein Git-Repo von Github zu klonen.
Das Problem ist, dass meine ~ / .ssh / id_rsa 440 Berechtigungen hat und 400 sein muss. Ich habe versucht, sie zu ändern, aber alle Änderungen an den Benutzerberechtigungen schlagen sich in den Gruppenberechtigungen nieder (dh chmod 600 ergibt 660 usw.) ). Dies scheint in jeder Datei im gesamten Dateisystem konstant zu sein.
Ich habe versucht, mit den ACLs zu experimentieren, aber ohne Erfolg (vollständige Kontrolle über meinen Benutzer und Verweigerung aller, was zu 000 führte)
Hier sind ein paar Ausgaben, die helfen sollen:
$ git clone [removed]
Cloning into [removed]...
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0660 for '/home/john/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/john/.ssh/id_rsa
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
$ ll ~/.ssh
total 6
-r--r----- 1 john None 1675 Nov 30 19:15 id_rsa
-rw-rw---- 1 john None 411 Nov 30 19:15 id_rsa.pub
-rw-rw-r-- 1 john None 407 Nov 30 18:43 known_hosts
$ chmod -v 400 ~/.ssh/id_rsa
mode of `/home/john/.ssh/id_rsa' changed from 0440 (r--r-----) to 0400 (r--------)
$ ll ~/.ssh
total 6
-r--r----- 1 john None 1675 Nov 30 19:15 id_rsa
-rw-rw---- 1 john None 411 Nov 30 19:15 id_rsa.pub
-rw-rw-r-- 1 john None 407 Nov 30 18:43 known_hosts
$ set | grep CYGWIN
CYGWIN='sbmntsec ntsec server ntea'
Mir ist klar, dass ich msysgit oder etwas anderes verwenden könnte, aber ich würde es vorziehen, alles von einem einzigen Terminal aus zu erledigen
Bearbeiten: Msysgit funktioniert aus den gleichen Gründen auch nicht
quelle
ls -l
werden die Berechtigungen als000
(----------
) angezeigt - aber Sie können die Datei trotzdem lesen und dies tunssh
und sichgit clone
beschweren darüber? Ich spekuliere, dass ichssh
mich nicht über zu strenge Berechtigungen beschweren werde. Ein kurzer Blick auf den Quellcode bestätigt dies, aber ich habe es nicht getestet.Antworten:
Es ist keine leere Gruppe erforderlich.
Während der Installation von cygwin gehören alle Dateien keiner Gruppe an. Sie können dies überprüfen, indem Sie einen
ls -al
. Sie werden sehen, dass sich keine Gruppe ("keine") in den Dateien befindet. Ändern Sie es einfach in Benutzer:Danach kannst du
chmod
was du willst.quelle
chgrp Users *
ändert nur alle Dateien und Ordner in$PWD
. Verwenden Sie die Option -R, um alle Unterordner / Dateien sowie $ PWD zu ändern:chgrp -R users *
Ich habe einen Cygwin-spezifischen Hack gefunden, um das jetzt zu umgehen.
Kurzversion:
Erstellen Sie einfach eine neue leere Windows-Gruppe, ändern Sie mit chgrp die Gruppe von id_rsa in diese und verweigern Sie dann die Lese- / Schreibberechtigungen für die Gruppe.
Lange Version: Drücken Sie
die Super-Taste und geben Sie lusrmgr.msc ein . Verwenden Sie diesen Manager, um eine leere Gruppe mit dem Namen " EMPTY_GROUP" zu erstellen
Jetzt müssen wir Cygwin von dieser neuen Gruppe erzählen.
Als nächstes aktualisieren wir die Gruppe von id_rsa :
Suchen Sie schließlich im Windows Explorer nach id_rsa und verweigern Sie auf der Registerkarte Sicherheit unter Eigenschaften die Lese- / Schreibberechtigungen.
Ich bin nicht sicher, wie Cygwin in 7, aber nicht in 8 damit umgehen konnte, aber das Problem scheint von der Gruppe der id_rsa-Datei None zu herrühren, einer Gruppe, die immer vollen Lese- / Schreibzugriff hat.
Dies scheint auch nur für die mit Cygwin gelieferte Datei ssh.exe zu funktionieren. Wenn Sie also beispielsweise ssh mit git verwenden möchten, überschreiben Sie die Datei ssh.exe from bin in Ihrer Git-Installation mit der Datei aus dem Ordner bin in Ihrer Cywgin-Installation .
quelle
Gewinnen Sie 8 + Cygwin
Ich bin auf Windows 8, 64bit. Folgendes löst es für mich:
quelle
Geben Sie in cygwin die folgenden Befehle ein:
Legen Sie die richtige Gruppe für den Basisordner fest:
chgrp -Rv HomeUsers /home
Legen Sie die richtigen Berechtigungen für die SSH-Identitätsdateien fest:
chmod 600 -Rv ~/.ssh/id*
NB: Die zuvor akzeptierte Antwort ist veraltet. Der Gruppenname lautet "HomeUsers", nicht "Users". Ein Kommentar ist noch nicht möglich.
quelle
Ich möchte auch zu diesem Thema Stellung nehmen. Ich habe ein ähnliches Problem auf meinem Windows 7-PC mit Git über Cygwin festgestellt.
Beim Versuch, Änderungen von meinem lokalen Git-Repository auf ein Remote-Repository zu übertragen (mithilfe von ssh und einem Schlüsselpaar zur Authentifizierung), gab git die Meldung aus, dass die Berechtigungen 0660 für die Datei zu offen waren
Es ist natürlich in Ordnung, wenn der ssh-agent diesen offenen privaten Schlüssel ablehnt.
Also habe ich die in diesem Thread erwähnten Dinge und andere Threads ausprobiert, die mit dem Besitz und dem rwx-Muster der Datei und des ~ / .ssh-Ordners zusammenhängen
Derselbe Fehler wurde jedoch immer wieder ausgelöst.
Aus irgendeinem Grund musste der ssh-agent-Prozess in cygwin abgebrochen und der folgende Befehl in der bourne again-Shell (bash) ausgeführt werden.
Vergessen Sie nicht, dem ssh-agent die gewünschte Identität hinzuzufügen, z
Dann habe ich gerne einen gültigen Push-Befehl wiederholt
und alles hat gut funktioniert.
quelle
Um die Antwort von Roi Danton zu erweitern . Wenn Sie Windows 8 über Ihre alte Windows-Installation installiert haben und Ihr vorheriges Cygwin-Verzeichnis immer noch aktuell ist, müssen Sie zuerst einige andere Dinge tun.
Übernehmen Sie zunächst das Eigentum an den Cygwin-Verzeichnissen / -Dateien
Mit dem Verzeichnis und den Unterverzeichnissen / Dateien sind einige Benutzerkonten verknüpft, die ungefähr so aussehen
S-1-2-34-1234567890-1234567890-1234567890-123
Entfernen Sie diese und übernehmen Sie den Besitz mit Ihrem eigenen Benutzerkonto.
Properties
von der Cygwin - VerzeichnisAdvanced
auf dieSecurity
RegisterkarteChange
der Besitzer für sich. Sie können Ihren Vornamen oder die zugehörige E-Mail-Adresse eingebenRemove
unbekannte Benutzer aus der ListeEnable Inheritance
OK
unten und dannYes
auf das Dialogfeld.Ändern Sie dann in Cygwin die Benutzergruppe aller Schlüsseldateien
Aus Roi Dantons Antwort :
.ssh
Verzeichnis -cd ~/.ssh
chgrp Users *
- Hiermit können Siechmod
die Dateien ordnungsgemäß ausführen.chmod 400 *
. 600 wird auch funktionieren.Testen Sie, ob es funktioniert hat
Einfach auf den Server Ihrer Wahl ssh. In meinem Fall ist es Bitbucket .
Gutes Ergebnis:
Schlechtes Ergebnis:
quelle
chgrp Users *
"C: /opscode/chef/embedded/bin/chgrp.exe": ungültige Gruppe "Benutzer"(Windows 10 Pro)
quelle