Wie löse ich "sign_and_send_pubkey: Signierung fehlgeschlagen: Agent hat Operation abgelehnt"?


108

Konfigurieren eines neuen Digital Ocean-Tröpfchens mit SSH-Schlüsseln. Wenn ich laufe, ssh-copy-idbekomme ich Folgendes:

ssh-copy-id user@012.345.67.89
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
sign_and_send_pubkey: signing failed: agent refused operation
user@012.345.67.89's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'user@012.345.67.89'"
and check to make sure that only the key(s) you wanted were added.

Wenn ich dann jedoch versuche, ssh zu verwenden, geschieht Folgendes:

ssh user@012.345.67.89
sign_and_send_pubkey: signing failed: agent refused operation
user@012.345.67.89's password: 

Nach Eingabe des Passworts bin ich einwandfrei angemeldet, aber dies macht natürlich den Zweck der Erstellung des SSH-Schlüssels zunichte. Ich habe mich entschlossen, einen Blick auf die Serverseite des SSH-Agenten zu werfen, und hier ist, was ich bekomme:

user@012.345.67.89:~# eval `ssh-agent -s`
Agent pid 5715
user@012.345.67.89:~# ssh-add -l
The agent has no identities.

user / .ssh / authorized_keys enthält ebenfalls einen ssh-rsa-Schlüsseleintrag, gibt jedoch find -name "keynamehere"nichts zurück.

Antworten:


194

Führen Sie es ssh-addauf dem Clientcomputer aus, der dem Agenten den SSH-Schlüssel hinzufügt.

Bestätigen Sie mit ssh-add -l(erneut auf dem Client), dass es tatsächlich hinzugefügt wurde.


7
Meine Güte, ich habe zwei Stunden lang versucht, das zu beheben, und das ist alles, was es war! Feste Bitbucket- und Acquia-SSH-Verbindungen
Ronnie

17
Es wurde hier nicht vollständig behoben, da ich es gpg-agentfür die SSH-Funktionalität verwende. Ich habe bereits eine enable-ssh-supporteingehende, gpg-agent.confaber immer noch gleiche Fehlermeldung. Ich habe auf Mailing - Liste findet diese auszuführen: gpg-connect-agent updatestartuptty /bye: bugs.debian.org/cgi-bin/bugreport.cgi?bug=835394
Roland

1
Ich musste nur den GPG-Agenten töten und ihn dann erneut ausführen.
Subin

3
Wenn Sie einen neuen SSH-Schlüssel generieren, ssh-addmuss dieser aufgerufen werden ssh-agent, damit der neue private Schlüssel erkannt wird (per linux.die.net/man/1/ssh-agent ).
alex

Hervorragend! Ich habe meinen SSH-Schlüssel neu erstellt und dies begann zu passieren. Nachdem ssh-addes funktioniert hat! Vielen Dank.
Hbobenicio

64

Nach dem Upgrade von Fedora 26 auf 28 hatte ich das gleiche Problem. Und folgende Protokolle fehlten

/var/log/secure
/var/log/messages

PROBLEM:

antop@localmachine  ~  ssh root@ocp1.example.com
sign_and_send_pubkey: signing failed: agent refused operation
root@ocp1.example.com's password:

Die Fehlermeldung zeigt nicht auf das eigentliche Problem. Problem behoben durch

chmod 700 ~/.ssh
chmod 600 ~/.ssh/*

Ich .ssh/hatte nicht die erforderlichen Berechtigungen, da ich sie selbst manuell erstellt hatte.
Brent Bradburn

1
Es scheint, dass einige Versionen nicht zulassen, dass Ihre Schlüssel für andere Benutzer sichtbar sind. Vielen Dank!
Alan Ocallaghan

Wenn .ssh / * -Dateien von demselben Benutzer (nicht von root) erstellt werden, müssen wir uns keine Sorgen machen, da sie über die erforderlichen Berechtigungen verfügen.
Anto

1
Ich muss dich schätzen. Ich bin gerade auf dieses Problem gestoßen. Mit Ihrer Methode hat es gelöst.
Land

54

Ich hatte das gleiche Problem in Linux Ubuntu 18 . Nach dem Update von Ubuntu 17.10 würde jeder git-Befehl diese Meldung anzeigen.

Der Weg, um es zu lösen, besteht darin, sicherzustellen, dass Sie die richtige Berechtigung für das id_rsaund haben id_rsa.pub.

Überprüfen Sie die aktuelle chmod-Nummer mit stat --format '%a' <file>. Es sollte 600 für id_rsa und 644 für sein id_rsa.pub.

Um die Berechtigung für die Dateien zu ändern, verwenden Sie

chmod 600 id_rsa
chmod 644 id_rsa.pub

Das hat mein Problem mit dem Update gelöst.


3
Ich hatte dieses Problem, nachdem ich Ubuntu von 16.04 LTS auf 18.04 LTS migriert hatte. Diese Lösung funktionierte für mich.
Munish Chandel

Gleich hier, nach dem Update von Ubuntu auf 18.04 hatte ich dieses Problem. Diese Lösung behebt das Problem.
Cartucho

Wann id_rsa.pubwird der Clientauthentifizierungsprozess verwendet?
Dimitri Kopriwa

Wenn Sie viele Schlüssel haben, sollten Sie ~/.sshchmod 600 id_*
Folgendes verwenden

9

Führen Sie den folgenden Befehl aus, um dieses Problem zu beheben.

Es hat bei mir funktioniert.

chmod 600 ~/.ssh/id_rsa

5

Ich hatte den Fehler, als ich gpg-agent als ssh-agent und einen gpg-Unterschlüssel als ssh-Schlüssel https://wiki.archlinux.org/index.php/GnuPG#gpg-agent verwendete .

Ich vermute, dass das Problem durch einen ungültigen Pin-Eintrag tty für gpg verursacht wurde, der durch meinen in meiner Sway-Konfiguration verwendeten Befehl sleep + lock verursacht wurde

bindsym $mod+Shift+l exec "sh -c 'gpg-connect-agent reloadagent /bye>/dev/null; systemctl suspend; swaylock'"

oder nur den Schlaf / Suspend

Setzen Sie die Pin-Eingabe zurück, um das Problem zu beheben

gpg-connect-agent updatestartuptty /bye > /dev/null

und das Update für meinen Sway Sleep + Lock Befehl:

bindsym $mod+Shift+l exec "sh -c 'gpg-connect-agent reloadagent /bye>/dev/null; systemctl suspend; swaylock; gpg-connect-agent updatestartuptty /bye > /dev/null'"


1
Danke dir. Ich hatte dieses Problem vor ein paar Tagen, ich benutze gpg wie Sie und habe gpg-connect-agent updaterstartuptty /bye > /dev/nullmein ~ / .zshrc kommentiert, das Kommentieren dieser Zeile hat mein Problem gelöst.
J. Adler

4

Zu diesem Fehler:

# git pull
sign_and_send_pubkey: signing failed: agent refused operation
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.

Überprüfen Sie den öffentlichen Schlüssel in Github-Konto> Profil> ssh oder fügen Sie ihn erneut hinzu.

Ich habe so gelöst:

# chmod 400 ~/.ssh/id_rsa

# ls  ~/.ssh/id_rsa -ls  
4 -r--------. 1 reinaldo reinaldo 1679 Jul 26  2017 /home/reinaldo/.ssh/id_rsa

# git pull                                 
remote: Counting objects: 35, done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 35 (delta 9), reused 34 (delta 9), pack-reused 0
Unpacking objects: 100% (35/35), done.

Danke dir.


2

Es kann verschiedene Gründe für den SSH-Fehler geben:

sign_and_send_pubkey: Signierung fehlgeschlagen: Agent hat Operation abgelehnt

Einige von ihnen könnten mit den in den anderen Antworten hervorgehobenen Problemen zusammenhängen (siehe Antworten in diesem Thread), einige könnten ausgeblendet sein und erfordern daher eine genauere Untersuchung.

In meinem Fall habe ich die folgende Fehlermeldung erhalten:

sign_and_send_pubkey: Signierung fehlgeschlagen: Agent hat Operation abgelehnt

user@website.domain.com: Berechtigung verweigert (publickey, gssapi-keyex, gssapi-with-mic)

Die einzige Möglichkeit, das eigentliche Problem zu finden, bestand darin, die ausführliche Option -v aufzurufen, die zum Drucken vieler Debugging-Informationen führte:

debug1: Connecting to website.domain.com [xxx.xxx.xxx.xxx] port 22.
debug1: Connection established.
debug1: identity file /home/user/.ssh/id_rsa.website.domain.com type 0
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_rsa.website.domain.com-cert type -1

Bitte beachten Sie, dass sich der Zeilenspruch key_load_public: No such file or directoryauf die nächste Zeile und nicht auf die vorherige Zeile bezieht.

Was SSH also wirklich sagt, ist, dass es die genannte öffentliche Schlüsseldatei nicht finden konnte, id_rsa.website.domain.com-certund das schien in meinem Fall das Problem zu sein, da meine öffentliche Schlüsseldatei das -certSuffix nicht enthielt .

Lange Rede, kurzer Sinn: In meinem Fall bestand die Lösung nur darin, sicherzustellen, dass die Datei mit dem öffentlichen Schlüssel wie erwartet benannt wurde. Ich hätte das nie ahnen können, ohne die Verbindung zu debuggen.

Unter dem Strich verwenden Sie den SSH-VERBOSE-MODUS (Option -v), um herauszufinden, was falsch ist. Es kann verschiedene Gründe geben, von denen keiner in diesem / einem anderen Thread gefunden werden kann.


0

Dies sollte eher eine SuperUser-Frage sein.

Richtig, ich habe genau den gleichen Fehler in MacOSX SourceTree, aber in einem iTerm2-Terminal funktionieren die Dinge einfach nur gut.

Das Problem schien jedoch zu sein, dass ich zwei ssh-agent Sekunden laufen habe;

Das erste ist /usr/bin/ssh-agent(auch bekannt als MacOSX) und dann auch das installierte HomeBrew /usr/local/bin/ssh-agent.

Durch das Starten eines Terminals von SourceTree aus konnte ich die Unterschiede erkennen SSH_AUTH_SOCK, indem lsofich die beiden verschiedenen ssh-agents fand und dann die Schlüssel (using ssh-add) in die Standardeinstellung des Systems ssh-agent(dh /usr/bin/ssh-agent) laden konnte. SourceTree funktionierte wieder.


0

Ja. Führen Sie ssh-add auf dem Clientcomputer aus. Wiederholen Sie dann den Befehl ssh-copy-id userserver@012.345.67.89


0

Für mich war das Problem ein falsches Kopieren / Einfügen des öffentlichen Schlüssels in Gitlab. Die Kopie erzeugte eine zusätzliche Rendite. Stellen Sie sicher, dass das, was Sie einfügen, ein einzeiliger Schlüssel ist.


0

Ich habe auch einen sign_and_send_pubkey: signing failed: agent refused operationFehler bekommen. Aber in meinem Fall war das Problem ein falscher pinentryWeg.

In meinem Haus zeigte ${HOME}/.gnupg/gpg-agent.confdas pinentry-programGrundstück auf einen alten Pinentry-Pfad. Korrigieren Sie den Pfad dort und starten gpg-agentSie ihn neu.

Ich habe es entdeckt, indem ich den Protokollen mit gefolgt bin journalctl -f. Dort, wo Protokollzeilen wie die folgenden den falschen Pfad enthalten:

Jul 02 08:37:50 my-host gpg-agent[12677]: ssh sign request failed: No pinentry <GPG Agent>
Jul 02 08:37:57 my-host gpg-agent[12677]: can't connect to the PIN entry module '/usr/local/bin/pinentry': IPC connect call failed

0

Ich muss teilen, da ich zu viel Zeit damit verbracht habe, nach einer Lösung zu suchen

Hier war die Lösung: https://unix.stackexchange.com/a/351742/215375

Ich habe diesen Befehl verwendet:

ssh-keygen -o -t rsa -b 4096 -C "email@example.com"

gnome-keyring unterstützt den generierten Schlüssel nicht.

Das Entfernen des -oArguments löste das Problem.


0

In meinem Fall bestand das Problem darin, dass der GNOME-Schlüsselring eine ungültige Passphrase für den zu verwendenden SSH-Schlüssel enthielt. Nachdem ich unanständig viel Zeit mit der Fehlerbehebung verbracht hatte, lief ich seahorseund fand den Eintrag, der eine leere Zeichenfolge enthielt. Ich kann nur vermuten, dass dies darauf zurückzuführen ist, dass die Passphrase bei der ersten Verwendung einige Zeit zuvor falsch eingegeben und dann wahrscheinlich der Anforderer oder so abgebrochen wurde, um zur Befehlszeile zurückzukehren. Das Aktualisieren des Eintrags mit der richtigen Passphrase löste das Problem sofort. Das Löschen dieses Eintrags (aus dem "Login" -Schlüsselring) und das erneute Eingeben der Passphrase an dieser ersten Eingabeaufforderung (und Aktivieren des entsprechenden Kontrollkästchens) löst dies ebenfalls. Jetzt erhält der Agent die richtige Passphrase aus dem beim Anmelden entsperrten Schlüsselring mit dem Namen "login" und fragt weder nach der Passphrase noch "verweigert den Betrieb". Natürlich YMMV.


0

Was hier funktioniert hat: auf dem Client

1) ssh-add

2) ssh-copy-id user @ server

Die Schlüssel wurden vor einiger Zeit mit "ssh-keygen -t rsa" erstellt. Ich habe die Fehlermeldung ausgetauscht, weil ich meinen öffentlichen ssh-Schlüssel vom Client auf den Server kopiert habe (mit ssh-id-copy), ohne zuerst ssh-add auszuführen. da ich fälschlicherweise angenommen hatte, ich hätte sie einige Zeit zuvor hinzugefügt.


0

Kurzer Hinweis für diejenigen, die kürzlich ein Upgrade auf die "moderne" SSH-Version [OpenSSH_8.1p1, OpenSSL 1.1.1d FIPS, 10. September 2019] durchgeführt haben - geliefert mit Fedora 31, scheint keine alten DSA SHA256-Schlüssel mehr zu akzeptieren (meine sind datiert 2006!) - hat einen neuen rsa-Schlüssel erstellt, öffentlich zu autorisiert hinzugefügt, privat auf dem Client, und alles funktioniert einwandfrei.

danke für frühere vorschläge, vor allem das ssh -v war sehr nützlich

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.