Github-Berechtigung verweigert: ssh add agent hat keine Identität


148

Ich greife zum ersten Mal auf GitHub zu und habe keine Erfahrung mit einer Konsole. Ich bin auf einem MacBook mit Bash. Wenn ich versuche, auf GitHub zuzugreifen, erhalte ich Folgendes:

git clone git@github.com:dhulihan/league-of-legends-data-scraper.git
Cloning into 'league-of-legends-data-scraper'...
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 versucht, den Anweisungen auf der Github-Seite zu folgen, dass die Erlaubnis verweigert wird.

Wenn ich benutze ssh -vT git@github.com, bekomme ich folgendes:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to github.com [192.30.252.129] port 22.
debug1: Connection established.
debug1: identity file /Users/XXXX/.ssh/id_rsa type -1
debug1: identity file /Users/XXXX/.ssh/id_rsa-cert type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /Users/XXXX/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/XXXX/.ssh/id_rsa
debug1: Trying private key: /Users/XXXX/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

Als nächstes wird eval "$(ssh-agent -s)""Agent pid 2314" zurückgegeben, jedoch ssh-add -l"Der Agent hat keine Identitäten".

Und dort stecke ich fest.


Haben Sie haben einen SSH - Schlüssel erstellt? Haben Sie es mit Ihrem Github-Konto aufgeführt? Hast du den Schlüssel auf deinem Mac?
Etan Reisner

Ich suchte nach der Antwort auf diese Frage (ich war mit diesem ganzen System nicht vertraut) und fand diese: mac.github.com Es löste alle meine Probleme. Ich empfehle es sehr. Danke für den Vorstoß in die richtige Richtung, Etan!
Dunkel

4
Vielleicht möchten Sie eine Antwort auf diese Frage hinzufügen (mit weiteren Details zur Lösung Ihres Problems) und Ihre Antwort akzeptieren.
Etan Reisner

Okay, ich habe die Antwort eingereicht. SO sagt mir, dass ich es nur in 2 Stunden akzeptieren kann.
Dunkel

Antworten:


194

Alle Details in dieser Antwort .

Zusammenfassend , wenn ssh-add -lreturns „Der Agent keine Identität hat“, bedeutet dies , dass die verwendeten Schlüssel durch ssh(in Dateien gespeichert, wie ~/.ssh/id_rsa, ~/.ssh/id_dsaetc.) sind entweder fehlen, sind sie nicht bekannt sind ssh-agent, die das Authentifizierungsagent ist, oder dass ihre Berechtigungen sind falsch eingestellt (zum Beispiel weltbeschreibbar).

Wenn Ihre Schlüssel fehlen oder wenn Sie keine generiert haben, verwenden Sie ssh-keygen -t rsa, ssh-addum sie hinzuzufügen.

Wenn Schlüssel vorhanden sind, aber nicht bekannt sind ssh-agent(z. B. wenn sie sich in einem nicht standardmäßigen Ordner befinden), verwenden ssh-add /path/to/my-non-standard-ssh-folder/id_rsaSie diese, um sie hinzuzufügen.

Sehen Sie diese Antwort, wenn Sie Probleme mit ssh-addoder haben  ssh-agent.


4
Vielen Dank an @Doedoe für einen Link zu einer schönen und kurzen Antwort. Und für diejenigen, die Schlüssel haben (dh mehrere Git-Konten), müssen Sie diese möglicherweise ssh-add /path/to/keyXfür jeden verwenden, insbesondere wenn sie nicht standardmäßige Namen haben. Details hier: stackoverflow.com/questions/3225862/… (eine nette Antwort)
tuk0z

Danke dafür. Ich habe hier stecken .. aber ich erkannte , dass ich laufen ssh-add wieder nach den Berechtigungen ein Teil des Problems lösen. Danach hat ssh -vT git@github.comes nicht funktioniert. Ich musste den absoluten Pfad wie den oben erwähnten Kommentator hinzufügen . Dann war alles Soße.
Jungledev

2
Im zweiten Fall habe ich meine Passphrase vergessen und sie mithilfe von help.github.com/articles/how-do-i-recover-my-ssh-key-passphrase
Malder

111

Versuche dies:

ssh-add ~/.ssh/id_rsa

arbeitete für mich


5
Hallo, willkommen bei SO. Bitte erläutern Sie Ihren Code, damit Ihre Mitbenutzer verstehen, was los ist. Prost.
Cthulhu

4
Wenn Sie neu starten, sind Ihre Schlüssel weg und Sie müssen sie erneut 'ssh-add'.
Louwki

@ Louwki Ja ... das ist super nervig. Kennen Sie einen Weg, um das zu umgehen?
Chris Cirefice

3
@ChrisCirefice führt einfach das ssh-add mit einem Parameter aus, um sie dauerhaft zu Ihrem Schlüsselbund hinzuzufügen. ssh-add -K ~ / .ssh / [Ihr-privater-Schlüssel]
Louwki

1
In meinem Fall waren die Dateiberechtigungen für den privaten Schlüssel falsch. chmod 600 ~/.ssh/id_rsassh-add ~/.ssh/id_rsa
Behoben

39

DIE ANTWORT 2019 für macOS Sierra & High Sierra & Catalina:

PS: Bei den meisten anderen Antworten müssen Sie einen neuen SSH-Schlüssel erstellen ... aber das müssen Sie nicht tun :)

Wie unter https://openradar.appspot.com/27348363 ausführlich beschrieben , hat macOS / OS X bis Yosemite SSH-Schlüssel gespeichert, die per Befehl hinzugefügt wurdenssh-add -K <key>

Hier sind die 4 Schritte, die ich ausführen musste, damit es funktioniert:

1: ssh-add ~/.ssh/PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

2: Fügen Sie Folgendes hinzu~/.ssh/config

Host * 
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

3: Stellen Sie sicher, dass Sie alle gitconfig-Einträge entfernen, die den osxkeychain-Helfer verwenden:

 https://github.com/gregory/dotfiles/commit/e38000527fb1a82b577f2dcf685aeefd3b78a609#diff-6cb0f77b38346e0fed47293bdc6430c6L48

4: Starten Sie Ihr Terminal neu, damit es wirksam wird.


3
Tolle Antwort, ich wollte das selbst erwähnen! Anscheinend lädt OS X 10.12.2 und höher Identitäten nicht automatisch in ssh-agent (was ich persönlich für eine wirklich dumme Usability-Entscheidung halte, aber ich verstehe die Auswirkungen auf die Sicherheit). Sie müssen also die SSH-Konfiguration ändern, um sie manuell zu laden. Ich wünschte nur, die Fehlerausgabe würde besser zu einer Lösung führen, als eine Stunde im Internet zu suchen.
Chris Cirefice

12

Ich habe eine Weile an dem gleichen Problem festgehalten, das ich schließlich gelöst habe.

Mein Problem : Ich konnte keinen Push ausführen. Ich konnte meine Fernbedienung überprüfen und sehen (mit git remote -v), aber als ich sie ausführte git push origin master, kehrte sie zurück: Permission denied (publickey). fatal: Could not read from remote repository.und so.

Wie ich es gelöst habe:

  • Ich habe einen Schlüssel mit generiertssh-keygen -t rsa . Die Eingabe eines Namens für die Schlüsseldatei (wenn Sie dazu aufgefordert wurden) war nutzlos.
  • Ich könnte dann den Schlüssel (zu git) : hinzufügenssh-add /Users/federico/.ssh/id_rsa , der erfolgreich zurückgegeben wurdeIdentity added: /Users/myname/.ssh/id_rsa (/Users/myname/.ssh/id_rsa)
  • Ich habe den SSH-Schlüssel über diese Hilfeseite zu Github hinzugefügt .
  • Nachdem ich alle Befehle auf der Hilfeseite "Berechtigung verweigert öffentlichen Schlüssel" von Github ausprobiert hatte, ssh-add -lfunktionierte / schien nur der Befehl nützlich (nachdem ich die vorherigen Schritte ausgeführt hatte), und gab meinen Schlüssel erfolgreich zurück. Der letzte Schritt zeigt Ihnen, wo Sie Ihren öffentlichen Schlüssel auf Ihrer GitHub-Seite überprüfen können. Mit diesem Befehl können Sie alle Ihre Schlüssel überprüfen : ls -al ~/.ssh.

Dann funktionierte der Push-Befehl schließlich!

Ich hoffe das wird helfen! Viel Glück an alle.


7

Führen Sie die folgenden Befehle aus:

ssh-keygen -t rsa
ssh-add /Users/*yourUserNameHere*/.ssh/id_rsa** 
pbcopy < ~/.ssh/id_rsa.pub**

Gehen Sie zu Ihrem Github-Konto: https://github.com/settings/profile

1) Klicken Sie auf: SSH- und GPG-Schlüssel

2) Neuer SSH-Schlüssel und dort einfügen

3) Fügen Sie den SSH-Schlüssel hinzu

Getan!


Ja, wenn Sie die anderen Schritte zum Erstellen der Datei id_rsa.pub durchlaufen haben, kopieren Sie diese pbcopy-Zeile, die den Schlüssel in Ihre Zwischenablage kopiert, und folgen Sie den Anweisungen von @zouhair. Github muss Ihren Schlüssel kennen. Besonders wenn Sie 2FA verwenden.
Davidrynn

Ich bin etwas verwirrt, weil die aktuellen Dokumente sagen, dass git github_rsa / github_rsa.pub erstellt. Ich habe beide in meinem /.ssh-Verzeichnis und kann dennoch keine "Erlaubnis bekommen". Ich habe Kopien im selben Verzeichnis mit der id_rsa ohne Erfolg erstellt.
Mark Löwe

6

Zunächst müssen Sie in Ihrem SSH-Verzeichnis
für diesen Typ den folgenden Befehl in Ihrem Terminal auf dem Mac oder was auch immer Sie im Fenster verwenden

cd ~/.ssh

Jetzt ist es in der SSH.
Hier finden Sie alle SSH-Schlüssel / -Dateien, die sich auf alle Projekte beziehen. Geben Sie nun den folgenden Befehl ein, um anzuzeigen, ob ein SSH-Schlüssel verfügbar ist

ls

Dies zeigt Ihnen alle verfügbaren SSH. In meinem Fall waren es
jetzt zwei . Sie müssen einen Agenten starten, um ein SSH hinzuzufügen. Für diesen Typ folgender Befehl

eval "$(ssh-agent -s)"

Zu guter Letzt fügen Sie diesem Agententyp nach dem folgenden Befehl ein ssh hinzu

ssh-add ~/.ssh/your-ssh

ersetzen

Ersetzen Sie your-ssh durch Ihren ssh-Dateinamen, für den Sie im zweiten Schritt eine Liste erhalten haben ls command


5

Dies kann dazu führen, dass für jedes neue Terminal die Agenten-ID unterschiedlich ist. Sie müssen den privaten Schlüssel für den Agenten hinzufügen

$ ssh-add <path to your private key>

1

Ein weiteres Element, das mir klar wurde, ist, dass normalerweise der Ordner .ssh in Ihrem Stammordner unter Mac OS X / Users / erstellt wird. Wenn Sie versuchen, ssh -vT git@github.com aus einem anderen Ordner zu verwenden, wird eine Fehlermeldung angezeigt, selbst wenn Sie den richtigen Schlüssel hinzugefügt haben.

Sie müssen den Schlüssel erneut aus dem aktuellen Ordner hinzufügen (ssh-add 'korrekter Pfad zu id_rsa'), um sich erfolgreich zu authentifizieren (vorausgesetzt, Sie haben den Schlüssel bereits in Ihr Profil in Git hochgeladen).


1

Das hat bei mir funktioniert:
chmod 700 .ssh chmod 600 .ssh/id_rsa chmod 644 .ssh/id_rsa.pub

Geben Sie dann Folgendes ein: ssh-add ~/.ssh/id_rsa


Ich glaube nicht, dass es um ~/.sshBerechtigungen geht. Sie können Ihre Antwort jedoch erheblich verbessern, indem Sie den vollständigen Befehl (hier chmod) hinzufügen und erklären, was dies bewirkt und warum es benötigt wird.
Robert

0

Nachdem ich lange gekämpft hatte, konnte ich dieses Problem endlich unter Windows beheben. Für mich war die User-env-Variable GIT_SSH so eingestellt, dass sie auf zeigt

"C: \ Programme (x86) \ WinScp \ PuTTY \ plink.exe"

welches zusammen mit WinScp installiert wurde. Ich habe das Zeigen geändert, um die Standard- Datei ssh.exe zu verwenden, die mit git-scm "C: \ Programme \ Git \ usr \ bin \ ssh.exe" geliefert wird.


0

Schritte für BitBucket:

Wenn Sie keinen neuen Schlüssel generieren möchten, überspringen Sie ssh-keygen

ssh-keygen -t rsa 

Kopieren Sie den öffentlichen Schlüssel in die Zwischenablage:

clip < ~/.ssh/id_rsa.pub

Bei Bit Bucket anmelden: Gehen Sie zu Profil anzeigen -> Einstellungen -> SSH-Schlüssel (auf der Registerkarte Sicherheit). Klicken Sie auf Schlüssel hinzufügen, fügen Sie den Schlüssel in das Feld ein und fügen Sie einen beschreibenden Titel hinzu

Zurück zu Git Bash:

ssh-add -l

Du solltest bekommen :

2048 SHA256:5zabdekjjjaalajafjLIa3Gl/k832A /c/Users/username/.ssh/id_rsa (RSA)

Jetzt: git pullsollte funktionieren


0

Ich hatte dieses Problem, nachdem ich eine Festplatte aus einem Backup wiederhergestellt hatte.

Mein Problem: Ich konnte meine Fernbedienung überprüfen und sehen (mit git remote -v), aber als ich git push origin master ausführte, gab es Folgendes zurück: Berechtigung verweigert (publickey). fatal: Konnte nicht aus dem Remote-Repository lesen.

Ich hatte bereits einen SSH-Ordner und SSH-Schlüssel und fügte sie über das Terminal hinzu (ssh-add /path/to/my-ssh-folder/id_rsa ) wurde meine Identität erfolgreich hinzugefügt, aber ich konnte immer noch nicht pushen und bekam immer noch den gleichen Fehler. Das Generieren eines neuen Schlüssels war für mich eine schlechte Idee, da es an andere sehr sichere Berechtigungen für AWS gebunden war.

Es stellte sich heraus, dass die Verbindung zwischen dem Schlüssel und meinem Github-Profil unterbrochen war.

Lösung: erneutes Hinzufügen des Schlüssels zu Github unter Profil> Einstellungen> SSH- und GPG-Schlüssel wurde das Problem behoben.

Außerdem: In meinem Konto wurde eine 2-Faktor-Authentifizierung eingerichtet. Wenn dies der Fall ist und Terminal Anmeldeinformationen anfordert, verwenden Sie Ihren Benutzernamen - aber NICHT Ihr Github-Passwort. Für die 2-Faktor-Authentifizierung müssen Sie Ihren Authentifizierungscode verwenden (für mich wurde dieser von Authy auf meinem Telefon generiert und ich musste ihn für das pw in das Terminal kopieren).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.