«ssh-add -d» отказался удалить личность

«ssh-add -d» отказался удалить личность

Чтобы забыть парольную фразу закрытого ключа (id_rsa), я обычно запускаю:

ssh-add -D # to forget all loaded identities
ssh-add -d # to forget primary identity ($HOME/.ssh/id_rsa)

Теперь с macOS Sierra v10.12.1 я получаю эту ошибку:

$ ssh-add -D
All identities removed.
$ ssh-add -d
Could not remove identity "/Users/user/.ssh/id_rsa": agent refused operation
Could not remove identity "/Users/user/.ssh/id_dsa": agent refused operation

Я искал в Google, но безуспешно!

решение1

У меня была та же проблема с Sierra. Попробуйте удалить id_rsaи $HOME/.ssh/перезапустить (я id_rsa.pubтоже удалил - поэтому два ключачастныйипубличный). Это решило мою проблему.

решение2

В моем случае у меня была немного другая проблема. Когда я вызвал ssh-add -Dагента, он, казалось, успешно выполнил свою задачу и ответил All identities removed., но на самом деле при перечислении ключей агента ssh-add -lнежелательные ключи оставались в списке, и, конечно, при попытке использовать агента для аутентификации на удаленном хосте агент предлагал мне использовать мою настроенную программу пин-кода для ввода парольной фразы к нежелательным ключам. Раздражает.

Причиной проблемы было то, что мой демон gpg-agent кэшировал ключи в файле по следующему пути ~/.gnupg/sshcontrol:

$ cat ~/.gnupg/sshcontrol
# List of allowed ssh keys.  Only keys present in this file are used
# in the SSH protocol.  The ssh-add tool may add new entries to this
# file to enable them; you may also add them manually.  Comment
# lines, like this one, as well as empty lines are ignored.  Lines do
# have a certain length limit but this is not serious limitation as
# the format of the entries is fixed and checked by gpg-agent. A
# non-comment line starts with optional white spaces, followed by the
# keygrip of the key given as 40 hex digits, optionally followed by a
# caching TTL in seconds, and another optional field for arbitrary
# flags.   Prepend the keygrip with an '!' mark to disable it.

# RSA key added on: 2021-06-03 16:23:25
# Fingerprints:  MD5:c1:[elided]:24
#                SHA256:+Mj[elided]E4
21[elided]C9 0
# Ed25519 key added on: 2021-06-03 22:11:36
# Fingerprints:  MD5:[elided]:24:da
#                SHA256:EL[elided]Zs
E0[elided]47 0

Удаление этих ключей ~/.gnupg/sshcontrolпозволило мне возобновить использование gpg-agent для аутентификации на удаленных хостах без запроса агентом парольной фразы для ключей, которые я больше не использовал.

решение3

Эта ошибка произошла со мной, когда идентификатор, на который ссылаются, отличался от того, который был добавлен. Опция -dудаляет определенный ключ. Если этот ключ никогда не загружался, он отказывается его удалять. Вы можете проверить загруженные ключи с помощью ssh-add -lи проверить подписи ключей с помощьюssh-keygen -lf <path-to-private-key>

решение4

Я обнаружил, что в Ubuntu 18.04 все еще есть эта ошибка.

Вот мой простой способ удалить нежелательные ключи из ssh-agent без особых усилий:

  1. Найдите ключ, который вы хотите удалить.

    ssh-add -l
    2048 SHA256:qzJYF7AJAJsLsJn7ZFPcJ+w78ZJVoPZI9TzXCq2cf5 .ssh/bad-key.pem (RSA)
    
  2. Перейдите в каталог ~/.ssh и создайте подкаталог, например, с именем disabled.

    cd ~/.ssh
    mkdir disabled
    
  3. Переместите ключ, который вы хотите отключить, в этот каталог.

    mv bad-key.pem disabled/
    

Вот и все. Ключ больше не должен быть доступен в ssh-agent, но вы все еще можете иметь его и добавить обратно, если вам это нужно.

Связанный контент