Jak usunąć tajne klucze gpg siłą, bez odcisku palca?

11

To generuje przypadek większość tajnych kluczy (bez klucza publicznego) w breloku GPG, i napisałem skrypt, aby usunąć te klucze, ale GPG nie pozwala mi na to:

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

cóż, wiem, co robię i wiem, że mogą istnieć zduplikowane identyfikatory kluczy, ale wydaje się, że nie ma sposobu, aby wymusić ich usunięcie, chociaż poniższe działania również nie działają:

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

Dowolny pomysł?

Xiè Jìléi
źródło

Odpowiedzi:

6

Służy gpg --list-secret-keys --with-colons --fingerprintdo generowania listy odcisków palców w łatwym do analizy formacie. Chwycić linie postaci , które odpowiadają klawisze, które chcesz usunąć, i przekazać odciski palców (the ) do .fpr:::::::::xxxx:xxxxgpg --batch --delete-secret-keys

Następujące polecenie generuje wszystkie tajne odciski palców kluczy. Pamiętaj, aby wybrać tylko te, które chcesz usunąć!

gpg --list-secret-keys --with-colons --fingerprint | sed -n 's/^fpr:::::::::\([[:alnum:]]\+\):/\1/p'
Gilles „SO- przestań być zły”
źródło
Świetny! Myślałem, że odcisk palca jest dostępny tylko w kluczach publicznych.
Xiè Jìléi
Ups! Mylę się, nie można pobrać odcisku palca, polecenie yeilds: gpg: klucz XXXXXXXX: tajny klucz bez klucza publicznego - pominięto gpg: błąd odczytu klucza: tajny klucz nie jest dostępny Właściwie zastanawiam się, dlaczego ` tak | ... 'nie działa i myślę, że jedynym sposobem jest łatka na gpg. Dzięki
Xiè Jìléi
3

Wiem, że ten temat jest stary i że odpowiedź wygląda trochę tak jak Gilles, ale myślę, że całkowicie odpowiada na pytanie (ponieważ miałem takie same problemy jak OP):

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

Połączyłem odpowiedzi Gillesa i Dolanora w jedną linijkę, która jest przydatna na wypadek, gdybyś chciał usunąć określony klucz:

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

Brak odpowiedzi na pierwotne pytanie, ale może być przydatny dla kogoś innego.

Nikolaos Georgiou
źródło
1

Wyeksportuj klucze, które chcesz zachować, usuń plik, a następnie ponownie utwórz pierścień.

Aaron Digulla
źródło
Wolałbym łatać i rekompilować gpg.
Xiè Jìléi