Zum Inhalt springen
ecdsa.com
OpenSSH client with an SSH agent (ssh-agent, gpg-agent, 1Password, Secretive, Windows OpenSSH agent)SSH

Fehlermeldung

sign_and_send_pubkey: signing failed for RSA "/path/to/key" from agent: agent refused operation

Auch ausgegeben als

  • sign_and_send_pubkey: signing failed: agent refused operation
  • sign_and_send_pubkey: signing failed for ED25519 "/path/to/key" from agent: agent refused operation

Schlüsseltyp und Pfad der Identitätsdatei variieren (`RSA`, `ED25519`, `ECDSA-SK` …). OpenSSH 8.3 und älter gaben die kürzere Form „sign_and_send_pubkey: signing failed: agent refused operation“ aus (geprüft in den Quellen von 7.9 und 8.4).

Was der Fehler bedeutet

Der Server hat den angebotenen öffentlichen Schlüssel akzeptiert, also hat ssh den SSH-Agenten gebeten, die Authentifizierungs-Challenge zu signieren – und der Agent hat abgelehnt. Der Schlüssel existiert, der Server würde ihn akzeptieren; nur die Operation mit dem privaten Schlüssel selbst hat nicht stattgefunden. Agenten lehnen ab, wenn sie eine Benutzerinteraktion brauchen, die sie nicht bekommen (eine Bestätigung, eine PIN, eine Berührung), oder wenn das Schlüsselmaterial hinter dem aufgelisteten Schlüssel nicht mehr nutzbar ist.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Antwortenden Agenten ermitteln und Schlüssel neu laden

    `SSH_AUTH_SOCK` zeigt dir, welcher Agent verwendet wird; `ssh-add -l` listet auf, was er hält. Entfernst du den Schlüssel und fügst ihn erneut hinzu, verschwinden veraltete Einträge.

    bash
    echo "$SSH_AUTH_SOCK"      # which agent answers: ssh-agent, gpg-agent, 1Password, ...
    ssh-add -l                 # keys the agent holds
    ssh-add -D && ssh-add ~/.ssh/id_ed25519   # reload a key that the agent cannot use anymore
  2. 2.

    gpg-agent ein Terminal für Abfragen geben

    Wenn gpg-agent SSH-Schlüssel bereitstellt, zeigt er PIN-Abfragen auf dem TTY an, das ihm mitgeteilt wurde; aktualisiere diese Angabe aus der aktuellen Shell heraus.

    bash
    # gpg-agent as SSH agent: tell it which terminal can show the PIN/confirmation prompt
    export GPG_TTY=$(tty)
    gpg-connect-agent updatestartuptty /bye

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen