Sie hatten folgenden Fehler:
Der Agent hat ein Versäumnis zuzugeben, mit dem Schlüssel zu signieren.
Dies ist eine leider nicht diagnostische Meldung. Es gibt (mindestens) zwei Klassen von Problemen, die behandelt werden könnten:
Der Schlüssel ist nicht geladen
Für die meisten Probleme bedeutet dies, dass Ihr ssh-agent
hat keine ssh-Schlüssel geladen, die für Ihr Konto auf dem Zielserver akzeptiert werden. In diesem Fall ist die Lösung, wie in der Antwort von @Networker auf diese Frage erwähnt, ziemlich einfach:Fügen Sie den Schlüssel hinzu:
ssh-add
Wenn sich der Schlüssel an einem nicht standardmäßigen Ort befindet, müssen Sie dies ssh-add
mitteilen :
ssh-add /path/to/key
Der Agent kann den Schlüssel nicht verstehen
Dies war der GNOME-Fehler 754028, der in Seahorse 3.29.90 behoben wurde (stable 3.30, veröffentlicht am 03.09.2018, enthalten in Ubuntu 18.10, Fedora 29 und wahrscheinlich Red Hat/CentOS 9). Seahorse vor 3.29.90 (und daher GNOME Keyring) konnte neue Schlüsseltypen wie ed25519 und mit ssh-keygen -o -a 100
generierte Schlüssel weder erstellen noch hinzufügen (wie im Secure Secure Shell-Tutorial vorgeschlagen).
Diagnose dieses Problems:
ssh myserver
schlägt fehl mit "ssh-Agent hat Fehler zugelassen"SSH_AUTH_SOCK= ssh myserver
funktioniert einwandfrei- Schlussfolgerung:
gnome-keyring
kann nicht mit komplexen Schlüsseln umgehen
Da ich gerade eine praktikable Problemumgehung für diesen Fehler gefunden habe und er nirgendwo veröffentlicht zu sein scheint (außer dem Kommentar, den ich gerade zu einem Ubuntu-Fehler hinzugefügt habe), werde ich ihn hier einfügen.
Problemumgehung: Starten Sie ein neues ssh-agent
Verwenden Sie denselben Socket wie den von gnome-keyring
:
ssh-agent -a $SSH_AUTH_SOCK
Dadurch wird eine neue Instanz von ssh-agent
gestartet (wobei die weniger leistungsfähige Instanz von GNOME überschrieben wird), sodass keine Schlüssel darin enthalten sind (obwohl seahorse
sagt, da das an den alten Agenten gebunden ist). Sie müssen sie über ssh-add
hinzufügen wie in Der Schlüssel ist nicht geladen angegeben Abschnitt oben.
Sie müssen dies jedes Mal ausführen, wenn Sie sich anmelden (oder es manuell zu Ihren Startskripten hinzufügen). Wenn Sie den alten Socket beibehalten möchten, führen Sie mv $SSH_AUTH_SOCK $SSH_AUTH_SOCK.broken
aus zuerst.
Ich habe das Problem einfach gelöst, indem ich diesen Befehl auf dem lokalen Computer ausgeführt habe (nach dem Generieren des Schlüssels):
$ ssh-add