如何强制删除没有指纹的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)

我知道我在做什么,我知道可能有重复的key-id,但是似乎无法强制删除它们,尽管以下操作也不起作用:

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

任何的想法?

Answers:


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'

大!我认为指纹仅在公共密钥中可用。
谢雷(YièJìléi)2010年

糟糕!我错了,无法从命令中获取指纹:yeilds:gpg:密钥XXXXXXXX:没有公共密钥的秘密密钥-跳过了gpg:错误读取密钥:秘密密钥不可用实际上,我只是想知道为什么`是的 ...'无效,我认为唯一的方法是在gpg上打补丁。谢谢
谢雷(YièJìléi)2010年

3

我知道这个话题很老,而且答案有点像吉尔斯一个,但我认为它可以完全回答这个问题(因为我遇到的问题与OP相同):

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

2

我将Gilles和Dolanor的答案合并到了这条衬里中,这在您要删除特定键的情况下很有用:

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

没有回答原始问题,但可能对其他人有用。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.