1171 Stimmen

Git: Wie löst man den Fehler "Permission denied (publickey)" bei der Verwendung von Git?

Ich habe einen Mac Snow Leopard und habe gerade git .

Ich habe gerade versucht

git clone git@thechaw.com:cakebook.git

aber das gibt mir diese Fehlermeldung:

Initialized empty Git repository in `/Users/username/Documents/cakebook/.git/`
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Was übersehe ich?
Ich habe auch versucht ssh-keygen ohne Passphase, aber immer noch derselbe Fehler.

14 Stimmen

Haben Sie versucht, den öffentlichen Schlüssel, den Sie mit ssh-keygen erzeugt haben, hochzuladen?

0 Stimmen

Mein Problem war, dass ich versucht habe, von sudo - dies ist ein anderer Benutzer mit einem anderen öffentlichen Schlüssel.

0 Stimmen

Derselbe Fehler. Ich habe zuvor einen öffentlichen Schlüssel über Github erstellt und dann ein weiteres Schlüsselpaar mit dem ssh-keygen Nutzen. Das Löschen des alten öffentlichen Schlüssels in den persönlichen Einstellungen auf Github und das Hinzufügen meines per SSH generierten Schlüssels id_rsa.pub zu den SSH- und GPG-Schlüsseln hat die Probleme mit der Klonberechtigung behoben.

1359voto

Rufinus Punkte 26730

Wenn der Benutzer kein öffentliches/privates ssh-Schlüsselpaar erzeugt hat, das zuvor

Diese Informationen beziehen sich auf theChaw, können aber auch auf alle anderen Git-Repositories angewendet werden, die SSH-Pubkey-Authentifizierungen unterstützen. (Siehe z. B. [gitolite][1], gitlab oder github.)

Beginnen Sie damit, Ihr eigenes Schlüsselpaar aus öffentlichem und privatem Schlüssel einzurichten. Dieses kann entweder DSA oder RSA verwenden, so dass im Grunde jeder Schlüssel, den Sie einrichten, funktioniert. Auf den meisten Systemen können Sie ssh-keygen verwenden.

  • Zuerst müssen Sie in Ihr .ssh-Verzeichnis wechseln. Öffnen Sie das Terminal und führen Sie aus:

cd ~/.ssh && ssh-keygen

  • Als Nächstes müssen Sie dies in Ihre Zwischenablage kopieren.
  • Unter OS X ausführen: cat id_rsa.pub | pbcopy
  • Unter Linux ausgeführt: cat id_rsa.pub | xclip
  • Unter Windows (über Cygwin/Git Bash) ausführen: cat id_rsa.pub | clip
  • Unter Windows (Powershell) ausführen: Get-Content id_rsa.pub | Set-Clipboard (Vielen Dank an @orion elenzil)
  • Fügen Sie Ihren Schlüssel über die Website zu Ihrem Konto hinzu.
  • Schließlich richten Sie Ihre .gitconfig ein.
  • git config --global user.name "bob"
  • git config --global user.email bob@... (Vergessen Sie nicht, Ihre Kommandozeile neu zu starten, um sicherzustellen, dass die Konfiguration neu geladen wird)

Das war's. Sie sollten jetzt klonen und auschecken können.

Weitere Informationen finden Sie unter https://help.github.com/articles/generating-ssh-keys (Dank an @Lee Whitney) [1]: https://github.com/sitaramc/gitolite

-

Wenn der Benutzer zuvor ein ssh-Schlüsselpaar aus öffentlichem und privatem Schlüssel erzeugt hat

  • Prüfen Sie, welche Schlüssel in den Einstellungen Ihres Github- oder Gitlab-Kontos autorisiert wurden.
  • bestimmen, welcher private Schlüssel von Ihrem lokalen Computer aus zugeordnet werden muss

eval $(ssh-agent -s)

  • festlegen, wo sich die Schlüssel befinden

ssh-add ~/.ssh/id_rsa

10 Stimmen

Okay. Es handelt sich eigentlich nicht um ein Git-, sondern um ein SSH-Synchronisierungsproblem. Ich habe das gleiche mit Assembla und Sie Link half mir, es zu lösen. Danke!

0 Stimmen

Diese Antwort ist hilfreich, aber dies scheint vollständiger und genauso einfach zu sein, wenn Sie Schlüssel von Grund auf neu erzeugen: help.github.com/articles/generating-ssh-keys

7 Stimmen

Ich hatte ein Problem mit dem Keygen. Er reagiert auf die E-Mail-Adresse in einer globalen Umgebungsvariablen. Falls Sie dieses Problem haben, sollten Sie im ersten Schritt die E-Mail-Adresse für Ihr Github-Konto angeben: ssh-keygen -t rsa -C "your_email@youremail.com"

330voto

stevek-pro Punkte 13546

Eine umfangreichere Fehlersuche und sogar eine automatische Behebung ist möglich:

ssh -vT git@github.com

Alternativ könnten wir laut den unten stehenden Kommentaren auch eine Ausgabe machen:

ssh -vT git@gitlab.com

oder ersetzen Sie gitlab/github durch die Git-Instanz, die in Ihrer Organisation verwendet wird.

Fuente: https://help.github.com/articles/error-permission-denied-publickey/

0 Stimmen

Das tat eine Menge Dinge, und dann bemerkte ich am Ende "erfolgreich authentifiziert", versuchte git pull und es war wieder in Ordnung.

2 Stimmen

Mein Problem hatte damit zu tun, dass ich einen anderen Schlüssel für meinen Server hatte. Nachdem ich mit dem obigen Befehl das Problem festgestellt hatte, habe ich die IdentifyFile in meiner Konfigurationsdatei korrigiert und es funktionierte.

2 Stimmen

Zeigt an, mit welchem Schlüssel Github versucht hat, sich zu authentifizieren. v hilfreich

233voto

kavinyao Punkte 2773

Dieser Fehler kann auftreten, wenn Sie auf die SSH-URL (Lesen/Schreiben) statt auf die Git Read-Only-URL zugreifen, aber keinen Schreibzugriff auf das Projektarchiv haben.

Manchmal möchte man nur sein eigenes Projektarchiv klonen, z.B. um es auf einem Server bereitzustellen. In diesem Fall benötigen Sie eigentlich nur READ-ONLY-Zugriff. Aber da das Ihr eigenes Repo, GitHub kann die SSH-URL anzeigen, wenn Sie das bevorzugen. Wenn der öffentliche Schlüssel des entfernten Hosts nicht in Ihren GitHub SSH-Schlüsseln enthalten ist, wird Ihnen der Zugriff verweigert, was voraussichtlich geschehen wird .

Ein ähnlicher Fall liegt vor, wenn Sie versuchen, das Projektarchiv einer anderen Person zu klonen, auf das Sie keinen Schreibzugriff per SSH-URL haben.

Mit einem Wort, wenn Sie nur ein Repository klonen wollen, verwenden Sie eine HTTPS-URL ( https://github.com/{user_name}/{project_name}.git ) anstelle der SSH-URL ( git@github.com:{user_name}/{project_name}.git ), wodurch eine (unnötige) Validierung des öffentlichen Schlüssels vermieden wird.


Update: GitHub zeigt jetzt HTTPS als Standardprotokoll an und dieser Schritt kann wahrscheinlich den möglichen Missbrauch von SSH-URLs reduzieren.

0 Stimmen

Mit dem https://github.com git url, heißt es immer noch SSL certificate problem: self signed certificate in certificate chain . git -c http.sslVerify=false clone ... scheint ein gefährlicher Schritt zu sein. Chrome gibt allerdings keine ssl-Warnungen aus. Was denken Sie?

1 Stimmen

@uos Ich bin leider nie auf dieses Problem gestoßen. Vielleicht sollten Sie zunächst denselben Befehl auf einem anderen Rechner ausprobieren und sehen, ob das Problem weiterhin besteht.

2 Stimmen

Das war es auch für mich. Danke! Um mein Git-Repositorium auf meinen Shared-Hosting-Account (1und1) zu klonen, musste ich Folgendes verwenden git clone https://github.com/MyUserName/MyRepo.git Klicken Sie einfach auf die Textlinks unter der Repo-URL auf der rechten Seite der Github-Seite, wo es heißt " Sie können mit HTTPS, SSH oder Subversion klonen. ". (Klicken HTTPS um den Link zu erhalten, anstatt den Standard SSH .)

189voto

jarora Punkte 4786

Die Github-Hilfe Link hat mir geholfen, dieses Problem zu lösen. Es sieht so aus, als ob der ssh-Schlüssel nicht zum ssh-Agent hinzugefügt wurde. Das habe ich dann gemacht.

Befehl 1:

Stellen Sie sicher, dass ssh-agent aktiviert ist. Der Befehl startet den ssh-Agenten im Hintergrund:

eval "$(ssh-agent -s)"

Befehl 2:

Fügen Sie Ihren SSH-Schlüssel zum ssh-agent hinzu:

ssh-add ~/.ssh/id_rsa

7 Stimmen

Nach dem Upgrade von OSx El Capitan auf Sierra hat das bei mir funktioniert.

0 Stimmen

Dies funktionierte bei mir auf dem Raspberry Pi, wo ssh-add anscheinend ein "-k"-Flag anstelle von "-K" hat. Aber sobald ich meinen Deployment-Schlüssel hinzugefügt hatte, konnte ich mein Repository erfolgreich über dessen SSH-Link klonen.

3 Stimmen

Dies ist die echte Lösung und sie wurde 4 Jahre später in die akzeptierte Antwort kopiert und eingefügt (auf Jan 11 ' 19 ), also verdient dies all unsere "Upvotes"!

159voto

crimbo Punkte 9192

Eine weitere Möglichkeit unter Windows, die in keiner dieser Antworten und auch nicht in den Git- oder Github-Dokumenten zur Fehlerbehebung behandelt wird:

git verwendet möglicherweise eine andere openssh-Datei, als Sie denken.

Ich erhielt die Permission denied (public key) Fehler beim Versuch, von github und ssh.dev.azure.com zu klonen oder zu ziehen, und ich hatte alle Anweisungen befolgt und überprüft, dass meine SSH-Schlüssel korrekt eingerichtet waren (vom Standpunkt von SSH aus gesehen), indem ich ssh -vT git@github.com y ssh -vT git@ssh.dev.azure.com . Und erhielt immer noch diese Fehler:

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Ich habe schließlich herausgefunden, dass das Problem darin besteht, dass sowohl Git für Windows als auch Windows ihre eigenen Versionen von openssh haben. Dies ist hier dokumentiert: https://github.com/desktop/desktop/issues/5641

Ich habe mich auf den Windows ssh-agent-Dienst verlassen, um meine ssh-Schlüssel-Passphrasen zu speichern, so dass Git (mit seiner separaten Version von openssh) meine privaten Schlüssel nicht lesen konnte. Ich halte es für einen Fehler, dass diese Fehlermeldung verwendet wird - sie ist irreführend.

Das war die Lösung:

git config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"

Oder in Ihrer ~/.gitconfig:

[core]
    sshCommand = 'C:\\Windows\\System32\\OpenSSH\\ssh.exe'

Vielleicht wird dies in Git für Windows bald behoben, aber dies ist das zweite Mal, dass ich mit diesem Problem Zeit verschwendet habe.

0 Stimmen

Damit war das Problem auch für mich gelöst. Seltsam ist nur, dass eine meiner Visual Studio-Lösungen, wenn ich die Paketmanager-Konsole benutze, mit git pull Ich würde "Permission Denied (publickey)" erhalten. Bei anderen Visual Studio-Lösungen (Projekte von mir) hatte ich jedoch keine Probleme... Diese Lösung ist sinnvoll, aber wie das Problem nur bei einem meiner Projekte auftrat, ist mir immer noch ein Rätsel.

1 Stimmen

Oder Sie können die C:\Program Files\Git\etc\gitconfig stattdessen, wenn Sie Cygwin git parallel verwenden und die ~/.gitconfig wie sie ist.

0 Stimmen

Dieses Problem besteht auch unter Win11 (zumindest nach dem Upgrade von Win10). Vielen Dank für die Lösung! Docs kann nicht mit ihm helfen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X