Агент GPG не удаляет мой ключ SSH из набора ключей

14

У меня действительно тревожная проблема. Я не могу gpg-agentудалить свой ключ SSH из его связки ключей, и он даже сохраняется там после многих перезагрузок.

$ ssh-add -D
SSH_AGENT_FAILURE
Failed to remove all identities.

Даже когда я говорю это, чтобы удалить личность:

$ ssh-add -d /path/to/private/key
Identity removed: /path/to/private/key

Я тогда смотрю

$ ssh-add -l
4096 1b:cb:52:a6:e5:13:e6:78:14:12:92:8f:34:8f:92:88 /path/to/private/key

и это все еще там.

Где это кешируется? Похоже, что по какой-то причине он записывает на диск, что страшно для SSH-агента. Я запускаю следующее, чтобы начать gpg-agent:

gpg-agent --enable-ssh-support --daemon 

Все остальное работает нормально, но куда-то кеширует этот файл и мне нужно его удалить.

Нафтули Кей
источник

Ответы:

15

Как и в большинстве GPG, учетные данные ssh кэшируются внутри .gnupgкаталога, в частности, в том ~/.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
# the caching TTL in seconds and another optional field for arbitrary
# flags.   Prepend the keygrip with an '!' mark to disable it.

# Key added on: 2013-09-19 22:15:50
# Fingerprint:  8b:56:b0:3f:c8...
681BF1EFF... 0
# Key added on: 2013-09-20 17:14:36
# Fingerprint:  4b:cb:7e:b0:d7...
F7BCEBD1C... 0

Как говорится в комментарии, вы можете удалить ключи, удалив их, или отключить их с помощью !. Я не проверял, но я представляю, что «отключение» ключа означает, что вы не можете явно включить его или добавить без редактирования файла.

larsks
источник
Это только ключевые отпечатки пальцев. В ~ / .gnupg / private-keys-v1.d /
dlitz
Но они больше не видны агенту ssh.
Жаворонки
13

Да, похоже, что ssh -dсломан агентом gpg. Вот обходной путь, использующий другую команду.

Запустите gpg-connect-agentкоманду из командной строки, чтобы подключиться к агенту. Затем из приглашений введите эту команду, чтобы вывести список ключей ssh.

KEYINFO --ssh-list --ssh-fpr

Вы должны увидеть что-то вроде:

S KEYINFO 3365433C34421CC53B52C9A82169FD2328CF610B D - - - P df:a2:36:8d:ad:88:b3:cc:00:96:10:d4:c9:2c:e0:df - S
OK

Теперь, чтобы удалить из агента:

DELETE_KEY 3365433C34421CC53B52C9A82169FD2328CF610B

Он скажет:

OK

Теперь выйдите с помощью команды BYE:

BYE OK закрытие соединения

Теперь проверьте с помощью, ssh-add -lи вы увидите, что это действительно так.

Джейкоб Браун
источник
Я получил подсказку после того, как набрал, DELETE_KEY <id>давая больше информации о том, откуда пришел файл… было полезно выяснить, какой именно ключ был
Сэм Мейсон,
1

Если вы хотите скрипт для этого:

keys=$(gpg-connect-agent 'keyinfo --list' /bye | awk '{print $3}' | head -n -1)
for key in $keys; do gpg-connect-agent "delete_key $key --force" /bye; done

Я не эксперт здесь, поэтому я просто даю простой сценарий, который я использую. Ничего фантастического. Ничего глубокого

AFP_555
источник