9

Случайно сгенерировано большое количество секретных ключей (без открытого ключа) в кольце ключей GPG, и я написал скрипт для удаления этих ключей, но GPG не позволяет мне это делать:

$ gpg --batch --yes --delete-secret-keys KEYS
gpg: can't do this in batch mod
gpg: (unless you specify the key by fingerprint)

хорошо, я знаю, что делаю, и знаю, что могут быть дублированные идентификаторы ключей, но, кажется, нет способа принудительно удалить их, хотя следующее тоже не работает:

$ yes | gpg --delete-secret-keys KEYS

Любая идея?

4 ответа4

6

Используйте gpg --list-secret-keys --with-colons --fingerprint для создания списка отпечатков пальцев в легко разбираемом формате. Возьмите строки вида fpr:::::::::xxxx: соответствующие ключам, которые вы хотите удалить, и передайте отпечатки пальцев (xxxx) в gpg --batch --delete-secret-keys .

Следующая команда генерирует все отпечатки секретных ключей. Не забудьте выбрать только те, которые вы хотите удалить!

gpg --list-secret-keys --with-colons --fingerprint | sed -n 's/^fpr:::::::::\([[:alnum:]]\+\):/\1/p'
3

Я знаю, что эта тема старая и что ответ вроде как Жиль, но я думаю, что он полностью отвечает на вопрос (поскольку у меня были такие же проблемы, как и у ОП):

for i in `gpg --with-colons --fingerprint | grep "^fpr" | cut -d: -f10`; do gpg --batch --delete-secret-keys "$i" ; done
1

Экспортируйте ключи, которые вы хотите сохранить, удалите файл и заново создайте кольцо.

1

Я объединил ответы Жиля и Доланора в один вкладыш, который полезен, если вы хотите удалить конкретный ключ:

gpg --fingerprint --with-colons ${GPG_KEY} |\
    grep "^fpr" |\
    sed -n 's/^fpr:::::::::\([[:alnum:]]\+\):/\1/p' |\
    xargs gpg --batch --delete-secret-keys

Не отвечая на оригинальный вопрос, но может быть полезным для кого-то еще.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .