Come eliminare le chiavi segrete gpg con la forza, senza impronte digitali?


11

L'incidente ha generato una grande quantità di chiavi segrete (senza chiave pubblica) nel portachiavi GPG e ho scritto uno script per eliminare quelle chiavi, ma GPG non mi permette di farlo:

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

bene so cosa sto facendo e so che potrebbero esserci ID-chiave duplicati, ma sembra che non ci sia modo di forzarli per eliminarli, anche se i seguenti non funzionano:

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

Qualche idea?

Risposte:


6

Utilizzare gpg --list-secret-keys --with-colons --fingerprintper generare l'elenco di impronte digitali in un formato facilmente analizzabile. Prendi le linee del modulo che corrispondono alle chiavi che desideri eliminare e passa le impronte digitali (le ) a .fpr:::::::::xxxx:xxxxgpg --batch --delete-secret-keys

Il seguente comando genera tutte le impronte digitali della chiave segreta. Assicurati di selezionare solo quelli che desideri eliminare!

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

Grande! Ho pensato che l'impronta digitale fosse disponibile solo nelle chiavi pubbliche.
Xiè Jìléi,

Oops! Sbaglio, l'impronta digitale non può essere recuperata, il comando genera: gpg: chiave XXXXXXXX: chiave segreta senza chiave pubblica - gpg ignorato: chiave di lettura dell'errore: chiave segreta non disponibile In effetti, mi sto solo chiedendo perché ` si | ... 'non funziona e penso che l'unico modo sia patch su gpg. Grazie
Xiè Jìléi l'

3

So che questo argomento è vecchio e che la risposta sembra un po 'Gilles, ma penso che risponda totalmente alla domanda (dato che ho avuto lo stesso tipo di problemi di OP):

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

2

Ho combinato le risposte di Gilles e Dolanor in questa unica riga utile nel caso in cui desideri eliminare una chiave specifica:

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

Non rispondere alla domanda originale, ma potrebbe essere utile per qualcun altro.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.