วิธีการลบคีย์ลับ gpg ด้วยการบังคับโดยไม่มีลายนิ้วมือ?


11

มันเป็นอุบัติเหตุที่สร้างรหัสลับจำนวนมาก (ไม่มีรหัสสาธารณะ) ในพวงกุญแจ GPG และฉันได้เขียนสคริปต์เพื่อลบคีย์เหล่านั้น แต่ GPG ไม่อนุญาตให้ฉันทำเช่นนั้น:

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

ฉันรู้ว่าฉันกำลังทำอะไรอยู่และฉันรู้ว่าอาจมีรหัสคีย์ซ้ำกัน แต่ดูเหมือนว่าจะไม่มีวิธีบังคับให้ลบพวกเขาแม้ว่าสิ่งต่อไปนี้จะไม่ทำงานเช่นกัน:

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

ความคิดใด ๆ

คำตอบ:


6

ใช้gpg --list-secret-keys --with-colons --fingerprintเพื่อสร้างรายการลายนิ้วมือในรูปแบบแยกวิเคราะห์ได้ง่าย คว้าเส้นของรูปแบบที่สอดคล้องกับปุ่มที่คุณต้องการลบและผ่านลายนิ้วมือ (คน) เพื่อfpr:::::::::xxxx:xxxxgpg --batch --delete-secret-keys

คำสั่งต่อไปนี้สร้างลายนิ้วมือกุญแจความลับทั้งหมด อย่าลืมเลือกเฉพาะสิ่งที่คุณต้องการลบ!

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

ที่ดี! ฉันคิดว่าลายนิ้วมือใช้ได้เฉพาะในกุญแจสาธารณะเท่านั้น
XièJìléi

อ๊ะ! ฉันผิด, ไม่สามารถดึงข้อมูลลายนิ้วมือ, คำสั่ง yeilds: gpg: key XXXXXXXX: รหัสลับที่ไม่มีรหัสสาธารณะ - ข้าม gpg: ข้อผิดพลาดในการอ่านคีย์: รหัสลับไม่พร้อมใช้งานในความเป็นจริงฉันแค่สงสัยว่าทำไม ใช่ | ... 'ไม่ทำงานและฉันคิดว่าวิธีเดียวคือแก้ไขบน gpg ขอบคุณ
XièJìléi

3

ฉันรู้ว่าหัวข้อนี้เก่าและคำตอบดูเหมือนจะเป็น Gilles แต่ฉันคิดว่ามันตอบคำถามทั้งหมด (เนื่องจากฉันมีปัญหาแบบเดียวกับ OP):

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

2

ฉันรวมคำตอบของ Gilles และ Dolanor เข้ากับซับอันนี้มีประโยชน์ในกรณีที่คุณต้องการลบคีย์เฉพาะ:

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

ไม่ตอบคำถามเดิม แต่อาจมีประโยชน์สำหรับคนอื่น


1

ส่งออกคีย์ที่คุณต้องการเก็บไว้ลบไฟล์แล้วสร้างเสียงกริ่งใหม่


ฉันอยากจะแก้ไข & คอมไพล์ gpg ใหม่
XièJìléi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.