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?

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'

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

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.


1

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


Je préfère plutôt patcher et recompiler gpg.
Xiè Jìléi
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.