नई .gnupg निर्देशिका: नई स्थापना में पुरानी गुप्त कुंजियों को आयात करें


9

मैंने अपना OS पुनः स्थापित कर लिया है (Ubuntu 16.04) और एक पुरानी .gnupg निर्देशिका है:

gpg-agent.conf  
gpg-agent-info-<hostname> 
gpg.conf  
private-keys-v1.d  
pubring.gpg  
secring.gpg  
S.gpg-agent  
trustdb.gpg

मैं अपनी पुरानी सार्वजनिक और निजी कुंजियों को नए gnupg में आयात करना चाहता हूं। (मैंने नई स्थापना में केवल .gnupg निर्देशिका को कॉपी नहीं किया है, क्योंकि मैं समझता हूं कि नए gnupg2 के डेटाबेस प्रारूप में कुछ अंतर हैं जो नए EC एन्क्रिप्शन विकल्पों का एक हिस्सा हैं।)

निम्नलिखित ने सार्वजनिक कुंजियों के लिए काम किया लेकिन गुप्त कुंजियों के लिए असफल रहा:

gpg --export --keyring=~/.gnupg.old/pubring.gpg | gpg --import
gpg --export-secret-keys --keyring=~/.gnupg.old/secring.gpg | gpg --import

बाद वाले ने जवाब दिया:

gpg: can't open `~/.gnupg/secring.gpg'  <== New Secret Keyring
gpg: WARNING: nothing exported
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0

ध्यान दें कि यह मेरी नई गुप्त अंगूठी खोलने में विफल है । यह एक फ़ाइल में निर्यात करने की कोशिश में वही त्रुटि देता है:

gpg --export-secret-keys --keyring=~/.gnupg.old/secring.gpg > secret.asc

gpg: can't open `~/.gnupg/secring.gpg'  <== New Secret Keyring
gpg: WARNING: nothing exported

चूँकि मेरी गुप्त कुंजी में मास्टर की का निजी भाग छीन लिया गया है, इसलिए मैंने भी उसी के साथ प्रयास किया --export-secret-subkeys, लेकिन प्रतिक्रिया वही थी। निर्यात के बाद मेरी कुंजी आईडी (ईमेल पता) डालना भी काम नहीं करता है। मैं दूसरी ओर, चाबियाँ सूचीबद्ध कर सकता हूं:

gpg --list-keys --keyring=~/.gnupg.old/secring.gpg

gpg: Oops; key lost!
node 0x1e7ee00 01/00 type=secret-key
node 0x1e9cbd0 00/00 type=user-id  "Me <Me@home.com>" ....
node 0x1e99dd0 00/00 type=signature  class=13 keyid=XXXXXXXX ts=1383637282
node 0x1e9c510 00/00 type=secret-subkey
node 0x1eaa210 00/00 type=signature  class=18 keyid=XXXXXXXX ts=1449138073
node 0x1eaf1f0 00/00 type=secret-subkey
node 0x1eaf580 00/00 type=signature  class=18 keyid=XXXXXXXX ts=138363647

(मैं "कुंजी खो" मान रहा हूं कि छीन ली गई गुप्त मास्टर कुंजी को संदर्भित करता है।) क्या कोई मुझे निर्देशित कर सकता है कि इसे कैसे हल किया जाए?

@ जेंस (नीचे) की मदद से, निम्नलिखित कार्य:

gpg --no-default-keyring --secret-keyring=~/.gnupg.old/secring.gpg --export-secret-keys | gpg --import

जवाबों:


7

सबसे पहले, आप एक तरह का "नो-ऑप" कर रहे हैं। gpgअब भी Ubuntu 16.04 पर GnuPG 1.4.20 है, जबकि gpg2GnuPG 2.0.28 से 2.1.11 तक की छलांग लगाई है। फिर, जबकि GnuPG 2.1 ने फ़ाइल स्वरूपों में कुछ बदलाव किए (नया कीस्टॉर प्रारूप "कीबॉक्स" / .kbxऔर गुप्त कीरिंग को सार्वजनिक रूप से मर्ज करना), यह अभी भी संगत है और पहले आह्वान पर गुप्त कीरिंग विलय करेगा gpg2। कीरिंग प्रारूप पुराना रहता है जब तक कि आप इसे मैन्युअल रूप से परिवर्तित नहीं करते हैं । पुराना प्रारूप पूरी तरह से समर्थित है, नया प्रारूप सिर्फ प्रदर्शन सुधार प्रदान करता है। नए कीबॉक्स प्रारूप में प्रस्तावित माइग्रेशन पथ पुराने GnuPG निर्देशिका के भीतर परिवर्तित हो रहा है , न कि पूरी तरह से नए में जाने के लिए:

किसी मौजूदा pubring.gpg फ़ाइल को की-बॉक्स प्रारूप में बदलने के लिए, आप पहले आउरस्ट्रिल वैल्यू का बैकअप लेते हैं, फिर फ़ाइल को (उदाहरण के लिए) publickeys में बदल देते हैं, इसलिए इसे किसी GnuPG संस्करण द्वारा मान्यता नहीं दी जाएगी, फिर आयात चलाएँ, और अंत में पुनर्स्थापित करें आत्मीयता के मूल्य:

$ cd ~/.gnupg
$ gpg --export-ownertrust >otrust.lst
$ mv pubring.gpg publickeys
$ gpg2 --import-options import-local-sigs --import publickeys
$ gpg2 --import-ownertrust otrust.lst

फिर आप publickeys फ़ाइल का नाम बदल सकते हैं ताकि इसे पुराने GnuPG संस्करणों द्वारा उपयोग किया जा सके। याद रखें कि इस मामले में आपके पास सार्वजनिक कुंजी की दो स्वतंत्र प्रतियां हैं। फ़ाइल में सभी gpg संस्करणों के द्वारा आवरस्ट्रीम मान रखे जाते हैं, लेकिन उन्हें आयात पर रखने के लिए उपरोक्त सावधानियां बरतने की आवश्यकता होती है।

आपके द्वारा पोस्ट किए गए त्रुटि संदेश को देखते हुए, ऐसा लगता है कि कुंजी बनाने के लिए नए ~/.gnupgहोम डायरेक्टरी या गुप्त कीरिंग पर कुछ अनुमतियां ~/.gnupg/secring.gpgअपर्याप्त हैं। यह अक्सर होता है अगर GnuPG को दुर्घटना से मूल उपयोगकर्ता से आमंत्रित किया गया था।

से संदेश --list-keysएक सामान्य आउटपुट नहीं है, लेकिन एक त्रुटि संदेश लगता है। एक मनमाने ढंग से कीरिंग प्रिंट करने के लिए, --no-default-keyringऔर --secret-keyringविकल्प और --list-secret-keysकमोड का उपयोग करें (और आमतौर पर GSTPG के लिए हमेशा पूर्ववर्ती आदेश होते हैं):

gpg --no-default-keyring --secret-keyring=secring.gpg --list-secret-keys

ठीक है, आपने इसे स्वामित्व के मुद्दे पर लिया था। मेरा नया secring.gpg रूट के स्वामित्व में था। साथ ही, पहचानने योग्य आउटपुट का उपयोग करना --no-default-keyringऔर उससे --secret-keyringपहले --list-secret-keys। तो, मुझे देखने दो कि मुझे अब क्या मिला है।
दिगंग

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