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.

128voto

Zeeshan Shabbir Punkte 6025

Ich kämpfte mit dem gleichen Problem, das ist, was ich tat, und ich war in der Lage, die Repo zu klonen. Ich folgte diesem Verfahren für Mac .

Erster Schritt: Prüfen, ob wir den öffentlichen SSH-Schlüssel bereits haben.

  1. Terminal öffnen.
  2. Eingabe ls -al ~/.ssh um zu sehen, ob bereits SSH-Schlüssel vorhanden sind:

Überprüfen Sie in der Verzeichnisliste, ob Sie bereits einen öffentlichen SSH-Schlüssel haben. Der Standardschlüssel ist einer der folgenden: d_dsa.pub, id_ecdsa.pub, id_ed25519.pub, id_rsa.pub.

Wenn Sie nichts finden, fahren Sie mit Schritt 2 fort, ansonsten folgen Sie Schritt 3.

Schritt 2: Erzeugen des öffentlichen SSH-Schlüssels

  1. Terminal öffnen.
  2. Geben Sie den folgenden Befehl mit einer gültigen E-Mail-Adresse ein, die Sie für Github verwenden ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  3. In Ihrem Terminal sehen Sie dann folgendes Generating public/private rsa key pair . Wenn es dazu auffordert "Enter a file in which to save the key," drücken Sie Enter. Damit wird der Standard-Dateispeicherort übernommen. Wenn Sie dazu aufgefordert werden Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter] Drücken Sie einfach erneut die Eingabetaste.
  4. Auf die Aufforderung hin, "Type a secure passphrase. Enter passphrase (empty for no passphrase): [Type a passphrase]" Drücken Sie die Eingabetaste, wenn Sie das nicht wollen. Enter same passphrase again: [Type passphrase again] erneut die Eingabetaste drücken

Dies erzeugt id_rsa.pub

Schritt 3: Hinzufügen des SSH-Schlüssels zum ssh-agent

  1. Interminale Art eval "$(ssh-agent -s)"

  2. Fügen Sie Ihren SSH-Schlüssel zum ssh-agent hinzu. Wenn Sie einen vorhandenen SSH-Schlüssel verwenden und nicht einen neuen SSH-Schlüssel erzeugen, müssen Sie id_rsa in dem Befehl durch den Namen Ihrer vorhandenen privaten Schlüsseldatei ersetzen. Geben Sie diesen Befehl ein $ ssh-add -K ~/.ssh/id_rsa

  3. Kopieren Sie nun den SSH-Schlüssel und fügen Sie ihn zu Ihrem Github-Konto hinzu

  4. Geben Sie im Terminal diesen Befehl mit dem Namen Ihrer ssh-Datei ein pbcopy < ~/.ssh/id_rsa.pub Dadurch wird die Datei in die Zwischenablage kopiert Öffnen Sie nun Ihr Github-Konto Gehen Sie zu Einstellungen > SSH- und GPG-Schlüssel > Neuer SSH-Schlüssel Geben Sie den Titel ein, fügen Sie den Schlüssel aus der Zwischenablage ein und speichern Sie ihn. Voila, Sie sind fertig.

7 Stimmen

Windows-Benutzer kopieren über: cat ~/.ssh/id_rsa.pub | clip

5 Stimmen

Schließlich nach dem Lesen hier und da für eine Stunde, Schritt für Schritt Lösung....works groß. Denken Sie daran, Ihr Github-Passwort als Passphrase in den Schritten hinzuzufügen, sonst müssen Sie es jedes Mal manuell hinzufügen

0 Stimmen

Tolle Antwort. Ich möchte noch hinzufügen, dass es für mich hilfreich war, Informationen darüber zu erhalten, wie ich meine Remote-Git-Details ändern kann - siehe diesen Link für Details: stackoverflow.com/a/63830575/1818235

111voto

Robina Li Punkte 928

Ich habe die gleiche Fehlermeldung erhalten.

Behoben mit der Verwendung der HTTPS anstelle der SSH Protokoll. Da ich keine "SSH-Schlüssel" für einen Test-PC festlegen möchte.

Ändern Sie beim Klonen die URL in HTTPS:

git clone https://github.com/USERNAME/REPOSITORY.git

Mein Problem ist ein wenig anders : Ich habe die URL eingestellt auf SSH beim Hinzufügen eines bestehenden lokalen Repos zu remote, indem Sie:

git remote add origin ssh://github.com/USERNAME/REPOSITORY.git

Um das Problem zu beheben, setzen Sie die URL auf HTTPS :

git remote set-url origin https://github.com/USERNAME/REPOSITORY.git

Übrigens, Sie können Ihre URL mit dem Befehl überprüfen:

git remote -v
origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY.git (push)

Hoffentlich hilft das jemandem wie mir :D

0 Stimmen

Danke! N

0 Stimmen

Ich habe es so gemacht. Es war alles in Ordnung, bis ich eine geänderte Übergabe durchführen wollte... und es schlug fehl. Ich steckte fest, da keine neuen Commits verwendet werden konnten, weil es gegen solche Aktivitäten geschützt ist.

48voto

Wouter Schoofs Punkte 846

Das funktioniert bei mir:

ssh-add ~/.ssh/id_rsa

0 Stimmen

Es konnte keine Verbindung zu Ihrem Authentifizierungsagenten geöffnet werden.

47voto

Ezra Siton Punkte 5083

Visuelle Anleitung (Windows)

1 von 2: Git-Batch-Seite

1.1. Öffnen Sie Git-Batch (Herunterladen ihre ) enter image description here

1.2. Kleister den folgenden Text (Ändern Sie die E-Mail Ihres GitHub-Kontos)

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

enter image description here

1.3. Presse Enter (Akzeptiert den Standard-Dateispeicherort) enter image description here

1.4. Klicken Sie auf Enter Zweimal (oder setzen Sie SSH-Schlüssel-Passphrasen - Gitbub Passphrasen-Dokumente )

> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

1.5. Der Schlüssel generiert:

Ihre Identifikation wurde in /c/Users/user/.ssh/id_rsa... gespeichert.

1.6. Copy den SSH-Schlüssel in Ihre Zwischenablage.

$ clip < ~/.ssh/id_rsa.pub

2 von 2 Benutzerseite der Github-Website

Unter user setting enter image description here

SSH and GPG keys => Neuer SSH-Schlüssel : enter image description here

Paste den Code aus Schritt 1.6 enter image description here

Erledigt :)

enter image description here


Wenn jemand SSH nicht verwenden möchte use HTTPS :

enter image description here

Github-Dokumente: https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh

31voto

wtj Punkte 331

Wenn Ihr Problem in letzter Zeit (in der zweiten Hälfte des Jahres 2021) aus heiterem Himmel aufgetreten ist, könnte es durch inkompatible Hash-Algorithmen verursacht worden sein.

Zum Zeitpunkt dieses Beitrags (Oktober 2021) ist die neueste Version von Git für Windows 2.33.1 ( Freigabemitteilung ), der das neueste OpenSSH 8.8p1 ( Freigabemitteilung ), der seinerseits SHA-1 veraltet hat . Wenn Ihr entferntes Git-Repository jedoch immer noch SHA-1 verwendet, schlägt die Authentifizierung fehl.

Um festzustellen, ob dies bei Ihnen der Fall sein könnte, überprüfen Sie die Version Ihrer Software:

ssh -V
git --version

Dann sollten Sie den Abschnitt "Potenziell inkompatible Änderungen" in OpenSSH 8.8/8.8p Versionshinweise .

TL;DR

Lösung 1: Aktivieren Sie SHA-1 wieder, indem Sie dies zu Ihrer ~/.ssh/config Datei:

Host <remote>
    HostkeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa

Denken Sie daran, die <remote> mit dem Hostnamen Ihres entfernten Repositorys.

Lösung 2: Regenerieren Sie Ihr Schlüsselpaar mit ECDSA oder Ed25519 anstelle von RSA. Zum Beispiel:

ssh-keygen -t ecdsa -C <comment>

Denken Sie daran, die <comment> mit einer eigenen mnemonischen Phrase. Laden Sie dann den generierten öffentlichen Schlüssel in Ihr Remote-Repository hoch.


Zu Ihrer Information: Ich habe diese Meldung erhalten, als ich auf Gitee.com zugegriffen habe, das Folgendes verwendet golang.org/x/crypto/ssh auf ihrem Server und hat eine Seite zu diesem Thema veröffentlicht aquí (in Mandarin).

git@gitee.com: Permission denied (publickey).

0 Stimmen

Ich habe Lösung 2 verwendet. Jetzt bin ich in der Lage, auf das Remote Repo zuzugreifen. Vielen Dank dafür. Diese Lösung funktioniert für Git, TrotoiseGit und SourceTree, die auf Git ssh konfiguriert sind, anstatt auf embedded.

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