फिंगरप्रिंट के बिना, बल द्वारा gpg गुप्त कुंजियों को कैसे हटाया जाए?


9

यह दुर्घटना 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 : उन कुंजियों के अनुरूप है जिन्हें आप हटाना चाहते हैं, और उंगलियों के निशान ( xxxx ) सेवा मेरे gpg --batch --delete-secret-keys

निम्न आदेश सभी गुप्त कुंजी फ़िंगरप्रिंट उत्पन्न करता है। केवल उन लोगों का चयन करना सुनिश्चित करें जिन्हें आप हटाना चाहते हैं!

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

महान! मुझे लगा कि फिंगरप्रिंट केवल सार्वजनिक कुंजी में उपलब्ध है।
Xiè Jìléi

ऊप्स! मैं गलत हूं, फिंगरप्रिंट को कमांड कमांड से प्राप्त नहीं किया जा सकता है: gpg: key XXXXXXXX: सार्वजनिक कुंजी के बिना गुप्त कुंजी - स्किप की गई gpg: त्रुटि पढ़ने की कुंजी: गुप्त कुंजी उपलब्ध नहीं है वास्तव में, मैं सोच रहा हूं कि क्यों ` हाँ | ... 'काम नहीं करता है, और मुझे लगता है कि एकमात्र तरीका gpg पर पैच है। धन्यवाद
Xiè Jìléi

3

मुझे पता है कि यह विषय पुराना है, और यह है कि उत्तर थोथा गिल्स एक जैसा दिखता है, लेकिन मुझे लगता है कि यह पूरी तरह से सवाल का जवाब देता है (क्योंकि मुझे ओपी के समान समस्याएं थीं):

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

1

उन कुंजियों को निर्यात करें जिन्हें आप रखना चाहते हैं, फ़ाइल को हटा दें और फिर अपनी अंगूठी को फिर से बनाएँ।


मैं बल्कि पैच & amp करना पसंद करूंगा; recompile gpg।
Xiè Jìléi

1

मैंने गाइल्स और डोलनर के उत्तरों को इस एक लाइनर में संयोजित किया जो उस मामले में उपयोगी है जिसे आप एक विशिष्ट कुंजी को हटाना चाहते हैं:

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

मूल प्रश्न का उत्तर नहीं, लेकिन किसी और के लिए उपयोगी हो सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.