Перейти к содержимому
ecdsa.com
OpenSSH client with an SSH agent (ssh-agent, gpg-agent, 1Password, Secretive, Windows OpenSSH agent)SSH

Сообщение об ошибке

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

Также выводится как

  • 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

Тип ключа и путь к файлу ключа меняются (`RSA`, `ED25519`, `ECDSA-SK`…). OpenSSH 8.3 и более ранние версии выводили более короткое «sign_and_send_pubkey: signing failed: agent refused operation» (проверено по исходному коду версий 7.9 и 8.4).

Что это означает

Сервер принял предложенный открытый ключ, поэтому ssh попросил SSH-агент подписать challenge аутентификации — и агент отказался. Ключ существует, и сервер принял бы его; не выполнена сама операция с закрытым ключом. Агенты отказывают, когда им нужно действие пользователя, которого они не могут получить (подтверждение, PIN, касание), или когда ключевой материал за ключом из списка больше непригоден.

Почему это происходит

Как исправить

  1. 1.

    Выясните, какой агент отвечает, и загрузите ключ заново

    `SSH_AUTH_SOCK` показывает, какой агент используется; `ssh-add -l` выводит то, что в нём хранится. Удаление ключа и повторное добавление убирают устаревшие записи.

    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 терминал для запросов

    Когда gpg-agent обслуживает SSH-ключи, он показывает запросы PIN-кода на том TTY, о котором ему сообщили; обновите эти сведения из текущей оболочки.

    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

Связанные ошибки

Открыть всю базу ошибок подписей