Bagaimana cara menghapus kunci rahasia gpg dengan paksa, tanpa sidik jari?

11

Kecelakaan itu menghasilkan sebagian besar kunci rahasia (tanpa kunci publik) di gantungan kunci GPG, dan saya telah menulis skrip untuk menghapus kunci-kunci itu, tetapi GPG tidak mengizinkan saya untuk melakukan itu:

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

baik saya tahu apa yang saya lakukan dan saya tahu mungkin ada duplikasi key-id (s), tetapi sepertinya tidak ada cara untuk memaksa untuk menghapusnya, meskipun berikut ini tidak berfungsi juga:

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

Ada ide?

Xiè Jìléi
sumber

Jawaban:

6

Gunakan gpg --list-secret-keys --with-colons --fingerprintuntuk menghasilkan daftar sidik jari dalam format yang mudah diurai. Ambil garis bentuk yang sesuai dengan tombol yang ingin Anda hapus, dan berikan sidik jari ( untuk) ke .fpr:::::::::xxxx:xxxxgpg --batch --delete-secret-keys

Perintah berikut menghasilkan semua sidik jari kunci rahasia. Pastikan untuk memilih hanya yang ingin Anda hapus!

gpg --list-secret-keys --with-colons --fingerprint | sed -n 's/^fpr:::::::::\([[:alnum:]]\+\):/\1/p'
Gilles 'SANGAT berhenti menjadi jahat'
sumber
Bagus! Saya pikir sidik jari hanya tersedia di kunci publik.
Xiè Jìléi
Ups! Saya salah, sidik jari tidak dapat diambil dari, perintah yeilds: gpg: key XXXXXXXX: kunci rahasia tanpa kunci publik - dilewati gpg: kunci pembacaan kesalahan: kunci rahasia tidak tersedia. Sebenarnya, saya hanya ingin tahu mengapa ` ya | ... 'tidak berfungsi, dan saya pikir satu-satunya cara adalah menambal pada gpg. Terima kasih
Xiè Jìléi
3

Saya tahu topik ini sudah lama, dan bahwa jawabannya agak mirip dengan Gilles, tapi saya pikir itu menjawab pertanyaan sepenuhnya (karena saya memiliki masalah yang sama dengan OP):

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

Saya menggabungkan jawaban oleh Gilles dan Dolanor ke dalam liner satu ini yang berguna jika Anda ingin menghapus kunci tertentu:

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

Tidak menjawab pertanyaan awal, tetapi mungkin bermanfaat untuk orang lain.

Nikolaos Georgiou
sumber
1

Ekspor kunci yang ingin Anda simpan, hapus file dan buat ulang cincin Anda.

Aaron Digulla
sumber
Saya lebih suka untuk menambal & mengkompilasi ulang gpg.
Xiè Jìléi