Как удалить секретные ключи gpg силой, без отпечатка пальца?

11

Случайно сгенерировал большую часть секретных ключей (без открытого ключа) в кольце ключей 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

Есть идеи?

Xiè Jìléi
источник

Ответы:

6

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

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

gpg --list-secret-keys --with-colons --fingerprint | sed -n 's/^fpr:::::::::\([[:alnum:]]\+\):/\1/p'
Жиль "ТАК - перестань быть злым"
источник
Большой! Я думал, что отпечаток пальца доступен только в открытых ключах.
Xiè Jìléi
К сожалению! Я не прав, отпечаток не может быть получен, команда выдает: gpg: ключ XXXXXXXX: секретный ключ без открытого ключа - пропущен gpg: ошибка чтения ключа: секретный ключ недоступен На самом деле, мне просто интересно, почему ` да | ... 'не работает, и я думаю, что единственный способ - это патч на gpg. Спасибо
Xiè Jìléi
3

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

for i in `gpg --with-colons --fingerprint | grep "^fpr" | cut -d: -f10`; do gpg --batch --delete-secret-keys "$i" ; done
Dolanor
источник
2

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

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

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

Николаос Георгиу
источник
1

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

Аарон Дигулла
источник
Я бы предпочел залатать и перекомпилировать gpg.
Xiè Jìléi