2012-07-08 6 views
56

मैं duplicity साथ बैकअप स्वचालित करने के लिए कोशिश कर रहा हूँ, लेकिन जब मैं परिणाम का परीक्षण, मैंपदबंध की जाँच करने के GPG कमांड लाइन का उपयोग कैसे करें सही है

GPG मिलती है: सार्वजनिक कुंजी डिक्रिप्शन विफल रहा है: बुरा पदबंध

मैं यह जांचना चाहता हूं कि मैं जिस पासफ्रेज़ का उपयोग कर रहा हूं वह वास्तव में संबंधित जीपीजी गुप्त-कुंजी से जुड़ा पासफ्रेज है, लेकिन मैं gpg कमांड लाइन विकल्पों में वैसे भी नहीं देख सकता हूं "एन्क्रिप्ट या डिक्रिप्ट न करें कुछ भी। बस पुष्टि करें कि मैं सही पासफ्रेज का उपयोग कर रहा हूं। "

इससे पता चलता है कि शायद मैं (फिर भी) जीएनयू गोपनीयता गार्ड को गलत समझ रहा हूं। (जब तक मैं रोता हूं तब तक मुझे तानाशाह करने के लिए एक पूर्वाग्रह है।)

क्या पासफ्रेज को सत्यापित करने के लिए जीजीपी से पूछना समझ में आता है? यदि हां, तो कैसे?

उत्तर

82

ऐसा करने के लिए कोई अंतर्निहित विधि नहीं है, लेकिन यह एक ऐसा परीक्षण बनाने के लिए काफी आसान है जो कुछ भी संशोधित नहीं करता है और आपको बस अपना पासफ़्रेज़ जांचने की अनुमति देता है।

आपने निर्दिष्ट नहीं किया है, इसलिए मुझे लगता है कि आप v2 से कम GnuPG संस्करण का उपयोग कर रहे हैं और आपके कमांडलाइन दुभाषिया के लिए बैश के साथ लिनक्स पर हैं।

मैं कमांड यहाँ और मैं नीचे दे देंगे समझा जाएगा प्रत्येक भाग का क्या करता है - (ध्यान दें: निम्नलिखित GnuPG श्रृंखला संस्करण 1 के लिए किया जाता है, GnuPG श्रृंखला वी 2 के लिए नीचे देखें)

echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"

क्या कि सबसे पहले, echo "1234" | के साथ जीएनयूपीजी पर हस्ताक्षर करने के लिए कुछ पाठ पाइप करें - क्योंकि हम वास्तव में कुछ भी हस्ताक्षर नहीं करना चाहते हैं, यह सिर्फ एक परीक्षण है, इसलिए हम कुछ बेकार पाठ पर हस्ताक्षर करेंगे।

अगला, हम --no-use-agent के साथ मुख्य एजेंट का उपयोग न करने के लिए जीजीपी बताते हैं; यह बाद में महत्वपूर्ण है क्योंकि, आपके कुंजी एजेंट के आधार पर, यह सफलता पर "0" वापस नहीं आ सकता है, और यह हम सब करना चाहते हैं - अपने पासफ्रेज़ की सफलता की पुष्टि करें।

अगला, हम हस्ताक्षर किए गए डेटा को सीधे /dev/null फ़ाइल में रखने के लिए जीजीपी बताते हैं, जिसका अर्थ है कि हम इसे छोड़ देते हैं और परिणाम को टर्मिनल पर नहीं लिखते हैं - नोट: यदि आप लिनक्स/यूनिक्स के कुछ संस्करण का उपयोग नहीं कर रहे हैं, तो यह फ़ाइल अस्तित्व में नहीं हो सकता है विंडोज़ पर आपको -o /dev/null भाग को छोड़कर स्क्रीन पर हस्ताक्षरित डेटा लिखने की अनुमति देनी पड़ सकती है।

अगला, हम उस कुंजी को निर्दिष्ट करते हैं जिसे हम --local-user का उपयोग करके हमारे परीक्षण करना चाहते हैं। आप अधिकतम विशिष्टता के लिए कीआईडी ​​का उपयोग कर सकते हैं, या उपयोगकर्ता नाम का उपयोग कर सकते हैं, जो भी आपकी आवश्यकताओं को सर्वोत्तम रूप से सुइट करता है।

अगला हम -as निर्दिष्ट करते हैं, जो एसीआईआई आउटपुट मोड को सक्षम करता है, और हस्ताक्षर के लिए संदर्भ मोड सेट करता है। - बाद में डेटा को मानक-इन से हस्ताक्षरित करने के लिए जीएनयूपीजी को बताता है, जो कि हम echo "1234" | दिए गए आदेश का पहला भाग है।

और आखिरकार, हमारे पास && echo "A message that indicates success" है - "& &" का अर्थ है, यदि पिछला आदेश सफल हुआ, तो इस संदेश को प्रिंट करें। यह स्पष्टता के लिए अभी जोड़ा गया है, क्योंकि ऊपर दिए गए आदेश की सफलता अन्यथा किसी आउटपुट द्वारा इंगित नहीं की जाएगी।

मुझे उम्मीद है कि यह समझने के लिए पर्याप्त है कि क्या हो रहा है, और आप इसका उपयोग कैसे कर सकते हैं, वह परीक्षण करें जिसे आप करना चाहते हैं। यदि कोई हिस्सा अस्पष्ट है या आप समझ में नहीं आते हैं, तो मुझे स्पष्ट करने में खुशी होगी। सौभाग्य!

[संपादित करें] - आप GnuPG v2 का उपयोग कर रहे हैं, तो उपरोक्त आदेश, थोड़ा संशोधित किया जाए ताकि तरह की आवश्यकता होगी:

echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"

कारण किया जा रहा है, GnuPG v2 उम्मीद पदबंध के माध्यम से प्राप्त किया जा करने के लिए एक एजेंट, इसलिए हम --no-use-agent के साथ एजेंट के उपयोग को अक्षम नहीं कर सकते हैं और वांछित प्रभाव प्राप्त कर सकते हैं; इसके बजाय हमें GnuPG v2 को बताने की आवश्यकता है कि हम "बैच" प्रक्रिया को चलाने के लिए चाहते हैं, और --passphrase-fd 1 विकल्प का उपयोग करके एसटीडीआईएन (मानक इन) से पासफ्रेज़ पुनर्प्राप्त करना चाहते हैं।

+8

यह gpg2 के साथ काम नहीं करता है, क्योंकि इसे हमेशा एक एजेंट की आवश्यकता होती है। इसके अलावा ncurses एजेंट किसी भी तरह से पाइप इनपुट द्वारा भ्रमित हो जाता है। तो मैंने अभी 'gpg --local-user -as' का उपयोग किया। यह सिर्फ एजेंट को पासफ्रेज के लिए पूछने देता है और आपको बताता है कि यह सही था (फिर कुछ नहीं करता)। – BubuIIC

+1

आप अधिकांश भाग के लिए सही बुबुलसी हैं; पास विकल्पों में मामूली संशोधन के साथ आप gpg2 का उपयोग कर एक समान परिणाम प्राप्त कर सकते हैं। मैंने जीपीजी और जीजीपी 2 के बीच मतभेदों का समर्थन करने के लिए अपना जवाब संशोधित किया। – kylehuff

+2

जीएनयूपीजी 2.1 के लिए इसे आज़माएं: 'gpg -o/dev/null --local-user -as <(echo 1234) && echo "इस कुंजी के लिए सही पासफ्रेज दर्ज किया गया था" ' – starfry

-2

बस अपनी निजी कुंजी का पासफ्रेज "(रिक्त) पर सेट करें। यह आपको पासफ्रेज़ प्रॉम्प्ट नहीं मिलने पर, कमांड लाइन में पासफ्रेज़ तर्क घोषित करने की अनुमति नहीं देगा।

gpg -d file_to_decrypt.pgp 

या कई फ़ाइलें:

gpg -- batch --decrypt-files *.pgp 

नोट:

एकल फ़ाइल के लिए अपने आदेश पंक्ति तो बस कुछ ऐसा दिखाई देगा, जो आपके पासफ़्रेज़ को बदलने के लिए, आप यह कर सकते या तो के माध्यम से कमांड लाइन, या क्लोपेट्रा या जीपीए (अनुशंसित) जैसे जीयूआई का उपयोग करना।

+0

यह प्रश्न का उत्तर नहीं लगता है। – Oddthinking

संबंधित मुद्दे