SSH-Server akzeptiert Schlüssel, aber die Signierung schlägt fehl

SSH-Server akzeptiert Schlüssel, aber die Signierung schlägt fehl

Ich habe kürzlich versucht, von einem Standard-SSH-Public-Key-Setup auf die Verwaltung meiner Schlüssel mit GPG umzusteigen.AnweisungenIm Wiki meiner Distribution habe ich die Verwendung von ssh gpg-agentanstelle der Standardeinstellung eingerichtet ssh-agent. Ich bin ziemlich sicher, dass das problemlos geklappt hat: Selbst wenn mein ~/.sshVerzeichnis entfernt wurde, ssh-add -lwird der eine Schlüssel angezeigt, den ich in gpg dafür eingerichtet habe.

Danach habe ich den Inhalt meiner Remote ~/.ssh/authorized_keysgenau auf die Ausgabe von local eingestellt ssh-add -Lund den Daemon neu gestartet.

Beim Versuch, eine Verbindung zu meiner Fernbedienung herzustellen ssh -v <myremote>, erhalte ich jetzt die folgende Fehlermeldung:

...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: (none) RSA SHA256:<myfingerprint> agent
debug1: Server accepts key: (none) RSA SHA256:<myfingerprint> agent
sign_and_send_pubkey: signing failed: agent refused operation
debug1: Trying private key: /home/zoickx/.ssh/id_rsa
debug1: Trying private key: /home/zoickx/.ssh/id_dsa
debug1: Trying private key: /home/zoickx/.ssh/id_ecdsa
debug1: Trying private key: /home/zoickx/.ssh/id_ed25519
debug1: Trying private key: /home/zoickx/.ssh/id_xmss
debug1: No more authentication methods to try.
<myremote>: Permission denied (publickey).

Der Server ist offensichtlich der Ansicht, dass mein öffentlicher Schlüssel autorisiert ist, weigert sich jedoch aus einem mir unklaren Grund, fortzufahren.

Die üblichen Antworten beim Googeln von " sign_and_send_pubkey: signing failed" sind, ssh-addden fehlenden privaten Schlüssel hinzuzufügen oder die Berechtigungen für Schlüsseldateien zu ändern. Keines davon scheint in meinem Fall mit gpg-agent hilfreich zu sein. Mein Schlüssel scheint für SSH verfügbar zu sein und es gibt keine Dateien, deren Berechtigungen geändert werden müssen.

Ein paar Dinge machen mir Sorgen:

  • Ich werde zu keinem Zeitpunkt nach einem GPG-PIN-Eintrag gefragt
  • Der öffentliche Schlüssel hat die Form ssh-rsa <key> (none)und endet mit dem seltsamen „none“ statt dem standardmäßigen user@host.

Zusätzliche Informationen zu meinem Setup:

  • gpg 2.2.15
  • libgcrypt 1.8.4
  • Ausgabe von gpgconf:
gpg:OpenPGP:/usr/bin/gpg
gpg-agent:Private Keys:/usr/bin/gpg-agent
scdaemon:Smartcards:/usr/lib/gnupg/scdaemon
gpgsm:S/MIME:/usr/bin/gpgsm
dirmngr:Network:/usr/bin/dirmngr
pinentry:Passphrase Entry:/usr/bin/pinentry
  • gpg funktioniert wie erwartet für die Verschlüsselung/Entschlüsselung, mit Pinentry funktioniert
  • Ich verwende weder Gnome noch eine andere Desktop-Umgebung - ich verwende dwm
  • Seepferdchen ist installiert

Antwort1

Da Sie nicht aufgefordert werden, Ihre GPG-Passphrase einzugeben, besteht das ProblemVielleichtdass der laufende GPG-Agent nicht auf das Display/Terminal zugreifen kann. Die gleichen Symptome sind mir unter Mac OS 10.14 (Mojave) mit GPG Version 2.2.17 begegnet.

Ich habe in der Manpage für gpg-agent einen Workaround gefunden:

Hinweis: Falls der GPG-Agent eine Signaturanforderung erhält, muss der Benutzer möglicherweise nach einer Passphrase gefragt werden, die zum Entschlüsseln des gespeicherten Schlüssels erforderlich ist. Da das SSH-Agent-Protokoll keinen Mechanismus enthält, der dem Agenten mitteilt, auf welchem ​​Display/Terminal er ausgeführt wird, verwendet die SSH-Unterstützung des GPG-Agenten das TTY- oder X-Display, auf dem der GPG-Agent gestartet wurde. Um dieses Display auf das aktuelle umzustellen, kann der folgende Befehl verwendet werden:

     gpg-connect-agent updatestartuptty /bye

Obwohl ich keine dauerhafte Lösung gefunden habe, funktioniert dieser Befehl bei mir. Er muss nach jedem Neustart wiederholt werden.

verwandte Informationen