Comment supprimer les clés secrètes gpg de force, sans empreinte digitale?

11

Son accident a généré une masse de clés secrètes (sans clé publique) dans le trousseau de clés GPG, et j'ai écrit un script pour supprimer ces clés, mais GPG ne me permet pas de le faire:

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

Eh bien, je sais ce que je fais et je sais qu'il peut y avoir des identifiants de clé en double, mais il ne semble pas possible de les forcer à supprimer, bien que ce qui suit ne fonctionne pas aussi:

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

Une idée?

Xiè Jìléi
la source

Réponses:

6

Utilisez gpg --list-secret-keys --with-colons --fingerprintpour générer la liste des empreintes digitales dans un format facilement analysable. Saisissez les lignes du formulaire qui correspondent aux touches que vous souhaitez supprimer et transmettez les empreintes digitales (les ) à .fpr:::::::::xxxx:xxxxgpg --batch --delete-secret-keys

La commande suivante génère toutes les empreintes digitales des clés secrètes. Assurez-vous de ne sélectionner que ceux que vous souhaitez supprimer!

gpg --list-secret-keys --with-colons --fingerprint | sed -n 's/^fpr:::::::::\([[:alnum:]]\+\):/\1/p'
Gilles 'SO- arrête d'être méchant'
la source
Génial! Je pensais que l'empreinte digitale n'était disponible que dans les clés publiques.
Xiè Jìléi
Oops! Je me trompe, l'empreinte digitale n'a pas pu être récupérée, la commande yeilds: gpg: clé XXXXXXXX: clé secrète sans clé publique - ignoré gpg: erreur de lecture clé: clé secrète non disponible En fait, je me demande juste pourquoi ` oui | ... 'ne fonctionne pas, et je pense que le seul moyen est le patch sur gpg. Merci
Xiè Jìléi
3

Je sais que ce sujet est ancien, et que la réponse ressemble un peu à Gilles, mais je pense qu'il répond totalement à la question (puisque j'ai eu le même genre de problèmes que OP):

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

J'ai combiné les réponses de Gilles et Dolanor dans cette ligne qui est utile au cas où vous voudriez supprimer une clé spécifique:

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

Ne répond pas à la question d'origine, mais pourrait être utile à quelqu'un d'autre.

Nikolaos Georgiou
la source
1

Exportez les clés que vous souhaitez conserver, supprimez le fichier, puis recréez votre bague.

Aaron Digulla
la source
Je préfère plutôt patcher et recompiler gpg.
Xiè Jìléi