SSH Private Key-Berechtigungen mit Git GUI oder ssh-keygen sind zu offen

244

Vor kurzem war ich nicht in der Lage, Github zu klonen oder zu pushen, und ich versuche, die Grundursache zu finden.

Dies ist auf Windows

Ich habe Cygwin + Git sowie Msysgit.

Msysgit wurde mit folgenden Optionen installiert:

  • OpenSSH
  • Verwenden Sie Git über die Windows-Eingabeaufforderung

Das gibt mir 4 Umgebungen, in denen ich versuchen kann, Git zu verwenden:

  • Windows-Cmd-Eingabeaufforderung
  • Power Shell
  • Git Bash
  • Cygwin

Irgendwie habe ich es geschafft, mich in eine Position zu bringen, in der beim Versuch, ein Repository mit msysgit, cmd.exe oder Powershell zu klonen, die folgende Fehlermeldung angezeigt wird:

> Initialized empty Git repository in
> C:/sandbox/SomeProject/.git/
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @    WARNING: UNPROTECTED PRIVATE KEY FILE!          @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> Permissions 0644 for
> '/c/Users/Ben/.ssh/id_rsa' are too
> open. It is recommended that your
> private key files are NOT accessible
> by others. This private key will be
> ignored. bad permissions: ignore key:
> /c/Users/Ben/.ssh/id_rsa Permission
> denied (publickey). fatal: The remote
> end hung up unexpectedly

Hierbei wird der Ordner .ssh in meinem Ordner c: \ users \ ben \ verwendet, der von msysgit verwendet wird. Ich vermute, dass Cygwin funktioniert, weil sich der .ssh-Ordner an einer anderen Stelle befindet, aber ich bin mir nicht sicher, warum

In Git Bash überprüfe ich die Berechtigungen:

$ ls -l -a ~/.ssh

Welches gibt mir:

drwxr-xr-x    2 Ben      Administ        0 Oct 12 13:09 .    
drwxr-xr-x   34 Ben      Administ     8192 Oct 12 13:15 ..    
-rw-r--r--    1 Ben      Administ     1743 Oct 12 12:36 id_rsa
-rw-r--r--    1 Ben      Administ      399 Oct 12 12:36 id_rsa.pub    
-rw-r--r--    1 Ben      Administ      407 Oct 12 13:09 known_hosts

Diese Berechtigungen sind anscheinend zu entspannt. Wie sie so gekommen sind, weiß ich nicht.

Ich kann versuchen, sie zu ändern ...

$ chmod -v -R 600 ~/.ssh

was mir sagt:

mode of `.ssh' changed to 0600 (rw-------)
mode of `.ssh/id_rsa' changed to 0600 (rw-------)
mode of `.ssh/id_rsa.pub' changed to 0600 (rw-------)
mode of `.ssh/known_hosts' changed to 0600 (rw-------)

Aber es scheint keine Wirkung zu haben. Ich bekomme immer noch den gleichen Fehler und tue es

$ ls -l -a ~/.ssh

liefert die gleichen Berechtigungen wie zuvor.

AKTUALISIEREN:

Ich habe versucht, die Berechtigungen für diese Dateien in cygwin zu korrigieren, und cygwin meldet ihre Berechtigungen korrekt. Gitbash funktioniert nicht: alt text http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg

Irgendwelche Ideen, wie ich diese Berechtigungen wirklich reparieren kann?

Ben Scheirman
quelle
1
Vielleicht möchten Sie uns mitteilen, welches native Dateisystem C: \ Users \ Ben \ verwendet. Es scheint, dass das Dateisystem keine echten Berechtigungen unterstützt oder die Zuordnungen zwischen der Shell und dem Dateisystem nicht ordnungsgemäß funktionieren. Können Sie die Berechtigungen über Windows-ACLs ändern?
Chen Levy
Ich verwende Windows 7. Ich kann die Berechtigungen dahingehend ändern, aber wie sollen sie sein? Alle github / ssh-Dokumente sagen, dass Sie 0600 benötigen, aber ich habe keine Ahnung, was das in Windows-ACLs bedeutet.
Ben Scheirman
2
Äh ... eine kleine Randnotiz hier, aber ein Verzeichnis auf 600 zu ändern ist eine schlechte Idee. Verzeichnisse (und ausführbare Dateien) sind immer eine Ziffer höher (700 nicht 600, 755 nicht 644). Wenn Sie dies in einem Verzeichnis tun, wird es nicht mehr aufgelistet. Weitere Informationen finden Sie unter dartmouth.edu/~rc/help/faq/permissions.html .
Mark Embling
Sind Sie gegen PuTTY?
Greg Bacon
Wenn es mein Problem behebt, nein, aber ich bin gespannt, warum dieses Setup bei mir nicht funktioniert.
Ben Scheirman

Antworten:

361

Sie haben die Berechtigungen für das gesamte Verzeichnis geändert. Ich bin damit einverstanden, dass Splash eine schlechte Idee ist. Wenn Sie sich an die ursprünglichen Berechtigungen für das Verzeichnis erinnern können, würde ich versuchen, sie darauf zurückzusetzen und dann die folgenden Schritte auszuführen

cd ~/.ssh
chmod 700 id_rsa

im .ssh-Ordner. Dadurch wird die Datei id_rsa nur für den Eigentümer (Sie) auf rwx (Lesen, Schreiben, Ausführen) und für alle anderen auf Null gesetzt.

Wenn Sie sich nicht an die ursprünglichen Einstellungen erinnern können, fügen Sie einen neuen Benutzer hinzu und erstellen Sie einen Satz SSH-Schlüssel für diesen Benutzer. Erstellen Sie daher einen neuen .ssh-Ordner mit Standardberechtigungen. Sie können diesen neuen .ssh-Ordner als Referenz für Berechtigungen zum Zurücksetzen Ihres .ssh-Ordners und Ihrer Dateien verwenden.

Wenn das nicht funktioniert, würde ich versuchen, msysgit zu deinstallieren, ALLE .ssh-Ordner auf dem Computer zu löschen (nur aus Sicherheitsgründen), dann msysgit mit den gewünschten Einstellungen neu zu installieren und erneut von vorne zu beginnen (obwohl ich glaube, Sie haben es mir gesagt du hast es schon versucht).

Bearbeitet: Habe auch gerade diesen Link über Google gefunden - Fixing "WARNUNG: UNGESCHÜTZTE PRIVATE SCHLÜSSELDATEI!" unter Linux Obwohl es auf Linux ausgerichtet ist, kann es hilfreich sein, da es sich um Liunx-Berechtigungen und dergleichen handelt.

Koby
quelle
2
Diese Antwort gilt speziell für die Verwendung von Cygwin oder msysgit (da msysgit eine Teilmenge von Cygwin oder möglicherweise mingw32 verwendet). Das Problem ist die Berechtigung für die Datei. Git arbeitet gerne mit (meistens) Linux-Berechtigungen (wahrscheinlich ein Nebenprodukt seiner Zielgruppe). Es ist bekannt, dass die Verwendung von git.exe in der Winodws-Shell Probleme verursacht. Ich würde empfehlen, bei msysgit zu bleiben. Zumindest bis GitSharp voll funktionsfähig ist.
Koby
2
Dies funktioniert nicht unter Windows 8 und meiner Jan '14 -Installation von Cygwin, da nach chmod 700 die Datei als rwxrwx --- angezeigt wird. Die Gruppenberechtigungen, die auf die Benutzerberechtigungen festgelegt werden sollen, auf die ich meine Schlüssel nicht verwenden kann.
Dean Hiller
1
@ DeanHiller, eine Erlaubnis von 700 sollte aussehen -rwx------. Was Sie also anzeigen, ist nicht korrekt, wenn Sie den Befehl chmod korrekt ausgeführt haben.
Koby
5
@Koby nein, es war ein Fehler mit einer Arbeit in der Nähe ... muss chgrp -R Users ~ / .ssh verwenden und dann funktioniert chmod jetzt und ändert die Berechtigungen tatsächlich korrekt ..... ein bekannter Fehler, den ich endlich gefunden habe ein anderer Beitrag.
Dean Hiller
2
Ich kann überprüfen, ob es in GitBash für Windows einen Fehler gibt, bei dem entweder die richtigen Berechtigungen NICHT mit chmod festgelegt werden können oder die Berechtigungen nicht korrekt gelesen werden. chmod 600 id_rsd; ls -l id_rs -> -rwx-r - r--
Charlweed
74

Es gibt einen Fehler mit Cygwins chmod, siehe:

/superuser/397288/using-cygwin-in-windows-8-chmod-600-does-not-work-as-expected

chgrp -Rv Users ~/.ssh/* 
chmod -vR 600 ~/.ssh/id_rsa
Kittikun
quelle
Aus irgendeinem Grund ist die Zuordnung von Windows-Berechtigungen zu cygwin / * nix-ähnlichen Berechtigungen etwas unscharf. Obwohl ich alle Berechtigungen anderer Benutzer auf der Windows-Seite entfernt habe, hat cygwin die Berechtigungen für mich, den Benutzer , dennoch auf eine andere Gruppe mit dem Namen angewendet None. (Ich nehme an, dies ist eine Standardprozedur, wenn eine Gruppe nicht explizit definiert wurde.) Diese Änderung an einer expliziten Gruppe Userserlaubte Cygwin angeblich, die Berechtigungen zu trennen, und ich konnte schließlich 600 anstelle einer automatischen 660 festlegen.
t-mart
3
Dies ist die richtige Antwort. Derjenige, der als die richtige Antwort gewählt wurde - ich denke, die Leute, die dafür gestimmt haben, waren Linux-Benutzer und haben nicht bemerkt, dass er den Befehl korrekt ausgeführt hat. Ich hatte heute das gleiche Problem mit Cygwin. Vielen Dank!
Michaelday
Bevor ich diese Lösung anwendete, chmod 600beschwerte ich mich bei der Verwendung von git, dass meine Berechtigungen noch vorhanden waren 0660. Durch das Korrigieren des Gruppenbesitzes wird Chown korrekt angewendet.
Guilherme Rodrigues
1
Ich habe Cygwin aktualisiert und es hat funktioniert. Sie müssen den Fehler behoben haben.
Duncan Calvert
17

Für * nix-Systeme ist die offensichtliche Lösung chmod 600 id_rsaofc, aber unter Windows 7 musste ich meinen Kopf eine Weile gegen die Wand schlagen, aber dann fand ich die magische Lösung:

Gehen Sie zu Arbeitsplatz / Rechtsklick / Eigenschaften / Erweiterte Systemeinstellungen / Umgebungsvariablen und LÖSCHEN Sie die Variable (möglicherweise sowohl aus der System- als auch aus der Benutzerumgebung):

CYGWIN

Grundsätzlich ist es ein Fehler in mingw32, der von Git Windows Binary verwendet wird, da immer alle Dateien 644 und alle Ordner 755 angezeigt werden. Das Entfernen der Umgebungsvariablen ändert dieses Verhalten nicht, weist ssh.exe jedoch anscheinend an, das Problem zu ignorieren. Wenn Sie über die Sicherheitseinstellungen des Explorers die richtigen Berechtigungen für Ihre id_rsa festlegen (es ist wirklich nicht erforderlich, dass ein anderer Benutzer als Ihr eigener Benutzer vorhanden ist, nicht "jeder", nicht "Administratoren", nicht "System". Keiner. Nur Sie). Sie werden immer noch sicher sein.

Nun, warum mingw32, ein anderes System als Cygwin, würde jede Verwendung der CYGWIN Umgebungsvariable, ist mir schleierhaft . Sieht für mich wie ein Käfer aus.

Tuncay Göncüoğlu
quelle
3
Das hat bei mir nicht funktioniert. Ich erhalte immer noch die Meldung "UNPROTECTED PRIVATE KEY FILE". Ich wollte Sie nur wissen lassen, falls jemand anderes auf diesen Thread mit ähnlichen Ergebnissen stößt.
Luc
Hat für mich gearbeitet. Das ist allerdings blöd. Ich benutze nicht einmal mehr Cygwin. Wie um alles in der Welt haben Sie das herausgefunden?
Gamut
13

Ich bin auf XP und dies erlaubte Git Bash, mit Github zu kommunizieren (nach viel Frust):

  1. kopieren c:\cygwin\bin\cyg*(~ 50 Dateien) nachc:\Program Files\Git\bin\
  2. kopieren c:\cygwin\bin\ssh.exenach c:\Program Files\Git\bin\(überschreiben)
  3. Erstellen Sie die Datei c:\Documents and Settings\<username>\.ssh\configmit:

    Host github.com
        User git
        Hostname github.com
        PreferredAuthentications publickey
        IdentityFile "/cygdrive/c/Documents and Settings/<username>/.ssh/id_rsa"
    
  4. (optional) Verwenden Sie diese Option ssh -v git@github, um das Debuggen der Verbindung anzuzeigen.

  5. Versuchen Sie es mit einem Push!

Hintergrund: Das allgemeine Problem ist eine Kombination dieser beiden:

  • BUG: mingw32 sieht alle Dateien als 644 (andere / gruppenlesbar), und nichts, was ich in mingw32, cygwin oder Windows versucht habe, konnte das Problem beheben.
  • Die SSH-Version von mingw32 lässt dies für private Schlüssel nicht zu (im Allgemeinen eine gute Richtlinie auf einem Server).
Steve Clay
quelle
Es scheint , keine Notwendigkeit , eine Datei zu bilden , c:\Documents and Settings\<username>\.ssh\configda Sie ersetzt c:\Program Files\Git\bin\ssh.exe mit c:\cygwin\bin\ssh.exe. Richtig ?
21.
Stimmen Sie mit "viel Frust" Kommentar überein. Für gitolite habe ich diese Schritte ausgeführt und cygwin / bin / cyg * in mein Git-Verzeichnis (PortableGit - oder - Programme / Git) kopiert und festgestellt, dass ich dann git von Git-Bash verwenden kann, aber nicht cygwin bash. Das Hinzufügen der bin-Verzeichnisse PortableGit und Cygwin zu meinem PATH funktionierte ebenfalls mit begrenztem Erfolg ... aber ich musste PortableGit / bin / ssh.exe {,. Bak} verschieben, damit es nicht versehentlich verwendet wurde (auch wenn es das ist das gleiche wie c: /cygwin/bin/ssh.exe). Grundsätzlich muss ssh.exe aufgrund anderer Abhängigkeiten, die nicht kopiert wurden, aus dem cygwin-Verzeichnis ausgeführt werden.
Michael
Obwohl es jetzt für mich funktioniert, besteht der nächste Versuch darin, sowohl Git als auch Cygwin zum PATH hinzuzufügen und die ssh.exe von Git aus dem Weg zu räumen, sodass die ssh.exe von cygwin verwendet wird (aus dem bin-Verzeichnis von cygwin).
Michael
Fügen Sie LogLevel DEBUGder Datei .ssh \ config hinzu, um die Debug-Ausgabe des von git.exe gestarteten Prozesses ssh.exe zu erhalten.
Knb
Danke - diese Lösung hat bei mir funktioniert! Insbesondere habe ich von c: \ cygwin \ bin \ ssh.exe, cygcrypto-0.9.8.dll, cygwin1.dll, cygminires.dll und cygz.dll nach C: \ Programme \ Git \ bin \ kopiert.
Nexus-Bytes
10

Für Windows 7 mit dem hier gefundenen Git (es verwendet MinGW, nicht Cygwin):

  1. Klicken Sie im Windows Explorer mit der rechten Maustaste auf Ihre Datei id_rsa und wählen Sie Eigenschaften
  2. Wählen Sie die Registerkarte Sicherheit und klicken Sie auf Bearbeiten ...
  3. Aktivieren Sie das Kontrollkästchen Verweigern neben Vollzugriff für alle Gruppen außer Administratoren
  4. Wiederholen Sie Ihren Git-Befehl
Brett Pennings
quelle
1
Das war es für mich, aber jetzt habe ich ein neues Problem, dass ssh mein Passwort nicht mag, jedes Passwort, das ich meiner Schlüsseldatei gebe.
Jason Southwell
7

OK, hier ist, wie ich die Änderung meiner Windows-Dateien in Bezug auf die Berechtigungen selbst unter Win7 erzwungen habe: Suchen Sie Ihren SSH-Schlüssel im Windows Explorer: C: \ Users [Ihr_Benutzername_hier] .ssh \ id_rsa

Klicken Sie mit der rechten Maustaste auf Datei> Eigenschaften> Registerkarte Sicherheit> Schaltfläche Erweitert> Berechtigungen ändern

Entfernen Sie nun alle Personen, die nicht Ihr Benutzername sind. Dies schließt Administrator- und Systembenutzer ein. An dieser Stelle erhalten Sie möglicherweise einen Dialog über das Erben von Berechtigungen. Wählen Sie die Option, die NICHT erbt, da wir nur diese Datei ändern möchten.

Klicken Sie auf OK und speichern Sie bis zum Abschluss.

Ich habe tagelang damit gekämpft, weil meine Fenster die Dateiberechtigungen über die Befehlszeile nicht ändern würden. Auf diese Weise wird es auch WIRKLICH gemacht - anstatt aufregende Workarounds zu verwenden, die seltsame Konsequenzen haben können.

diannaL
quelle
6

Das Ändern der Dateiberechtigungen von Eigenschaften, das Deaktivieren der Vererbung und das Ausführen von chmod 400 hat bei mir nicht funktioniert. Die Berechtigungen für meine private Schlüsseldatei waren:

-r - r ----- 1 alex Keine 1766 8. März 13:04 /home/alex/.ssh/id_rsa

Dann bemerkte ich, dass die Gruppe Keine war, also rannte ich einfach

chown alex: Administratoren ~ / .ssh / id_rsa

Dann konnte ich die Berechtigungen mit chmod 400 erfolgreich ändern und einen Git-Push ausführen.

alex.m
quelle
4

FÜR MAC-BENUTZER:

Ändern Sie die Einstellungen Ihrer Schlüsselpaardatei, indem Sie dies im Terminal eingeben:

chmod og-r *filename.pem*

(Stellen Sie sicher, dass Sie sich im richtigen Verzeichnis befinden oder dass der Dateiname im Befehl korrekt ist).

Andrew
quelle
3

Ich löse es laufend:

chmod 400 ~/.ssh/id_rsa

Ich hoffe zu helfen. Viel Glück.

CristianOrellanaBak
quelle
1
Wenn Sie die Berechtigungen auf 400 ändern, wie Cristian erwähnt hat, wäre dies sicherer.
SylvesterAbreuLoreto
2

Nachdem ich kürzlich auf das Problem gestoßen war und dies eines der besten Google-Ergebnisse war, dachte ich, ich würde mich mit einer einfachen Problemumgehung einmischen, die in der Diskussion hier dokumentiert ist: http://code.google.com/p/msysgit/issues/detail?id = 261 # c40

Sie müssen lediglich die mysys ssh.exe mit Ihrer cygwin ssh.exe überschreiben

Chriskhan
quelle
2

Ich hatte vor kurzem das gleiche Problem unter Windows XP. Ich habe versucht, 700 in meiner ~ / .ssh / id_rsa-Datei zu ändern, aber es schien nicht zu funktionieren. Als ich mir die Berechtigungen mit ls -l für ~ / .ssh / id_rsa ansah, konnte ich feststellen, dass meine effektiven Berechtigungen immer noch 644 waren.

Dann erinnerte ich mich, dass Windows-Berechtigungen auch Berechtigungen von den Ordnern erben und der Ordner immer noch für alle geöffnet war. Eine Lösung könnte darin bestehen, Berechtigungen für den Ordner festzulegen, aber ich denke, ein besserer Weg wäre, das System anzuweisen, die Vererbung für diese Datei zu ignorieren. Dies kann mithilfe der erweiterten Option auf der Registerkarte Sicherheit in den Eigenschaften der Datei erfolgen und das Kontrollkästchen "Von übergeordneten Berechtigungen erben ..." deaktiviert ist.

Dies kann für andere mit demselben Problem hilfreich sein.

Daramarak
quelle
1

Ich spiele gerade mit Git 1.6.5 und kann Ihr Setup nicht replizieren:

Administrator@WS2008 /k/git
$ ll ~/.ssh
total 8
drwxr-xr-x    2 Administ Administ     4096 Oct 13 22:04 ./
drwxr-xr-x    6 Administ Administ     4096 Oct  6 21:36 ../
-rw-r--r--    1 Administ Administ        0 Oct 13 22:04 c.txt
-rw-r--r--    1 Administ Administ      403 Sep 30 22:36 config_disabled
-rw-r--r--    1 Administ Administ      887 Aug 30 16:33 id_rsa
-rw-r--r--    1 Administ Administ      226 Aug 30 16:34 id_rsa.pub
-rw-r--r--    1 Administ Administ      843 Aug 30 16:32 id_rsa_putty.ppk
-rw-r--r--    1 Administ Administ      294 Aug 30 16:33 id_rsa_putty.pub
-rw-r--r--    1 Administ Administ     1626 Sep 30 22:49 known_hosts

Administrator@WS2008 /k/git
$ git clone [email protected]:alexandrul/gitbook.git
Initialized empty Git repository in k:/git/gitbook/.git/
remote: Counting objects: 1152, done.
remote: Compressing objects: 100% (625/625), done.
remote: Total 1152 (delta 438), reused 1056 (delta 383)s
Receiving objects: 100% (1152/1152), 1.31 MiB | 78 KiB/s, done.
Resolving deltas: 100% (438/438), done.

Administrator@WS2008 /k/git
$ ssh [email protected]
ERROR: Hi alexandrul! You've successfully authenticated, but GitHub does not pro
vide shell access
Connection to github.com closed.

$ ssh -v
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007

chmod ändert auch die Dateiberechtigungen für meine Schlüssel nicht.

Umgebung:

  • Windows Server 2008 SP2 unter NTFS
  • Benutzer: Administrator
  • Umgebungsvariablen:
    • PLINK_PROTOCOL = ssh
    • HOME = / c / profile / home

Update: Git 1.6.5.1 funktioniert auch.

alexandrul
quelle
interessant. Sieht aus wie Sie die Kitt-Option verwenden?
Ben Scheirman
1

Dies ist ein besonders problematisches Problem unter Windows, bei dem es nicht ausreicht, nur die Dateien korrekt zu ändern. Sie müssen Ihre Umgebung einrichten.

Unter Windows hat das bei mir funktioniert:

  1. Installieren Sie cygwin.

  2. Ersetzen Sie die msysgit ssh.exe durch die ssh.exe von cygwin.

  3. Mit cygwin bash chmod 600 die private Schlüsseldatei, die für mich "id_rsa" war.

  4. Wenn es immer noch nicht funktioniert, gehen Sie zu Systemsteuerung -> Systemeigenschaften -> Erweitert -> Umgebungsvariablen und fügen Sie die folgende Umgebungsvariable hinzu. Wiederholen Sie dann Schritt 3.

    Variabler Wert
    CYGWIN sbmntsec

Michael Bosworth
quelle
1

Ich konnte dies beheben, indem ich zwei Dinge tat, obwohl Sie möglicherweise nicht Schritt 1 tun müssen.

  1. Kopieren Sie von cygwin ssh.exe und allen cyg * .dll in das bin-Verzeichnis von Git (dies ist möglicherweise nicht erforderlich, aber es ist ein Schritt, den ich unternommen habe, aber dies allein hat die Dinge nicht behoben).

  2. Befolgen Sie die Schritte von: http://zylstra.wordpress.com/2008/08/29/overcome-herokus-permission-denied-publickey-problem/

    Ich habe meiner ~ / .ssh / config-Datei einige Details hinzugefügt:

Host heroku.com
Hostname heroku.com
Port 22
IdentitätenNur ja
IdentityFile ~ / .ssh / id_heroku
TCPKeepAlive yes
User brandon

Ich musste User als meine E-Mail-Adresse für heroku.com verwenden. Hinweis: Dies bedeutet, dass Sie einen Schlüssel erstellen müssen. Ich habe diesen befolgt, um den Schlüssel zu erstellen. Wenn Sie zur Eingabe des Schlüsselnamens aufgefordert werden, müssen Sie id_heroku http: / angeben /help.github.com/win-set-up-git/


  1. Fügen Sie dann den Schlüssel hinzu: heroku keys: add ~ / .ssh / id_heroku.pub
Christy Hotney
quelle
1

Der Trick für mich war, die CYGWIN- Umgebungsvariable mit " tty nodosfilewarning " zu aktualisieren . Ich musste nicht einmal den Schlüssel ändern.

tohokami
quelle
0

Keine direkte Antwort auf die Hauptfrage, sondern auf Ihre Frage, wie der Ordner von cygwin funktioniert ... In der Regel stellt cygwin alle "Ihre" Dateien unter das Äquivalent von c: \ cygwin \ home \ username. Dieser Ordner wird für benutzerspezifische Einstellungen und nicht für das Windows-Benutzerverzeichnis behandelt.

J Wynia
quelle
0

Sofern es keinen Grund gibt, warum Sie dieses private / öffentliche Schlüsselpaar (id_rsa / id_rsa.pub) behalten oder Ihren Kopf gerne an die Wand schlagen möchten, würde ich empfehlen, sie nur neu zu erstellen und Ihren öffentlichen Schlüssel auf github zu aktualisieren.

Erstellen Sie zunächst eine Sicherungskopie Ihres Verzeichnisses ~ / .ssh.

Geben Sie Folgendes ein und antworten Sie mit "y", ob Sie die vorhandenen Dateien überschreiben möchten.

ssh-keygen -t rsa

Kopieren Sie den Inhalt des öffentlichen Schlüssels in Ihre Zwischenablage. (Im Folgenden erfahren Sie, wie Sie dies auf einem Mac tun sollten.)

cat ~/.ssh/id_rsa.pub | pbcopy

Gehen Sie zu Ihrem Github-Konto und fügen Sie diesen Schlüssel hinzu.

Name: My new public key
Key: <PASTE>

Beenden Sie Ihr Terminal und starten Sie ein neues neu.

Wenn Sie sinnlose Fehlermeldungen wie "Geben Sie Ihr Passwort ein" für Ihren öffentlichen Schlüssel erhalten, wenn Sie noch nie einen eingegeben haben, ziehen Sie diese Technik des Neustarts in Betracht. Wie Sie oben sehen, ist es nicht kompliziert.

l3x
quelle
0

Ich habe es nie geschafft, dass git in Powershell komplett funktioniert. Aber in der Git-Bash-Shell hatte ich keine Probleme mit Berechtigungen, und ich musste chmod usw. nicht einstellen. Nachdem ich das ssh zu Github hinzugefügt hatte, war ich betriebsbereit.

Sam Kenny
quelle
0

Typ am Terminal:

chmod -Rf 700 ~/.ssh/

Und versuche es erneut.

João Paulo Cercal
quelle
0

Haben Sie die Schlüsseldatei von einem anderen Computer kopiert?

Ich habe gerade eine id_rsaDatei auf dem Client-Computer erstellt und dann den gewünschten Schlüssel eingefügt. Keine Berechtigungsprobleme. Nichts zu setzen. Es hat einfach funktioniert. Es funktioniert auch, wenn Sie PuTTYgen verwenden, um den privaten Schlüssel zu erstellen.

Möglicherweise ein Problem mit versteckten Gruppen, wenn Sie es von einem anderen Computer kopieren.

Getestet auf zwei Windows 8.1-Computern. Verwenden von Sublime Text 3 zum Kopieren und Einfügen des privaten Schlüssels. Verwenden von Git Bash (Git-1.9.4-Preview20140611).

PhilT
quelle
0

Nachdem ich meine Cygwin-Installation um Februar 2015 ( 1.7.34(0.285/5/3) 2015-02-04 12:14 x86_64 Cygwin) auf eine Version aktualisiert hatte , stieß ich plötzlich auf die UNPROTECTED PRIVATE KEY FILEWarnung.

Ich habe dieses Problem behoben, nachdem ich den folgenden Befehl ausgeführt habe:

setfacl -s u::rw-,g::---,o:--- ~/.ssh/id_rsa

(Eine andere Antwort auf eine andere Frage gibt mehr Kontext)

Abdull
quelle
0

@ kobys Antwort funktioniert bei mir nicht, also nehme ich eine kleine Änderung vor.

cd ~/.ssh
chmod 700 id_rsa.pub

Das funktioniert gut für mich auf dem Mac.

Han Pengbo
quelle
0

Ich hatte das gleiche Problem unter Windows 10, bei dem ich versuchte, SSH in eine Vagrant-Box zu integrieren. Dies scheint ein Fehler in der alten OpenSSH-Version zu sein. Was hat bei mir funktioniert:

  1. Installieren Sie das neueste OpenSSH von http://www.mls-software.com/opensshd.html
  2. where.exe ssh

(Beachten Sie die ".exe", wenn Sie Powershell verwenden.)

Sie könnten etwas sehen wie:

C:\Windows\System32\OpenSSH\ssh.exe
C:\Program Files\OpenSSH\bin\ssh.exe
C:\opscode\chefdk\embedded\git\usr\bin\ssh.exe

Beachten Sie, dass im obigen Beispiel das neueste OpenSSH an zweiter Stelle im Pfad steht, sodass es nicht ausgeführt wird.

So ändern Sie die Reihenfolge:

  1. Klicken Sie mit der rechten Maustaste auf die Windows-Schaltfläche -> Einstellungen -> "Systemumgebungsvariablen bearbeiten".
  2. Klicken Sie auf der Registerkarte "Erweitert" auf "Umgebungsvariablen ...".
  3. Bearbeiten Sie unter Systemvariablen "Pfad".
  4. Wählen Sie "C: \ Programme \ OpenSSH \ bin" und "Nach oben", damit es oben angezeigt wird.
  5. OK klicken
  6. Starten Sie Ihre Konsole neu, damit die neuen Umgebungsvariablen angewendet werden können.
Jasper Citi
quelle
0

Mein System ist ein bisschen durcheinander mit bash / cygwin / git / msysgit / vielleicht-mehr ...

chmodhatte keine Auswirkung auf den Schlüssel oder die configDatei.

Dann habe ich beschlossen, es von Windows aus zu erreichen, was funktioniert hat.

  1. Klicken Sie mit der rechten Maustaste auf die Datei, deren Berechtigung korrigiert werden muss.
  2. Wählen Sie Properties.
  3. Wählen Sie die SecurityRegisterkarte.
  4. Klicken Sie Advancedunten.
  5. Klicken Sie Changeneben Owneroben auf.
  6. Geben Sie "My-Awesome-Username" ein (ändern Sie dies offensichtlich in Ihren aktuellen Windows-Benutzernamen) und klicken Sie Check Namesdann auf OK.
  7. Unter Permission entries:Markieren Sie jeden Benutzer, der nicht „My-Super-Benutzername“ ist, und wählen SieRemove . Wiederholen Sie diesen Vorgang, bis nur noch "My-Awesome-Username" übrig ist.
  8. Wählen Sie "My-Awesome-Username" und klicken Sie auf Edit unten.
  9. Stellen Sie sicher, dass Type:oben eingestellt ist Allow, und aktivieren Sie das Kontrollkästchen neben Full control.
  10. Hit OK, Apply, OK, OK.

  11. Probieren Sie es jetzt noch einmal aus ...

Scheint, dass der Mock-Bash manchmal den Dateibesitz nicht kontrollieren kann. Es ist besonders seltsam, da es aus einem Mock-Bash-Skript generiert wird. Stelle dir das vor.

Jack_Hu
quelle
0

Keine der hier vorgeschlagenen Problemumgehungen (chmod / chgrp / setfacl / windows perms) funktionierte für mich mit msys64 auf einer Windows 7-Unternehmens-VM. Am Ende habe ich das Problem umgangen, indem ich einen SSH-Agenten mit dem auf stdin bereitgestellten Schlüssel verwendet habe. Wenn Sie dies zu meinem hinzufügen, .bash_profilewird es zum Standard für mein Login:

eval $(ssh-agent -s)
cat ~/.ssh/id_rsa | ssh-add -k -

Jetzt kann ich mit SSH-Fernbedienungen Git Push und Pull machen.

Andy Brown
quelle