एक बार में सभी gpg उपकुंजी पासवर्ड कैश करें? कई gpg पासवर्ड प्रविष्टि के लिए आवश्यक रोकें?


10

क्या मैं सिर्फ एक बार अपना gpg पासवर्ड दर्ज कर सकता हूं और अपनी सभी उप कुंजियों (हस्ताक्षर, डिक्रिप्शन, प्रमाणीकरण) को अनलॉक कर सकता हूं?

फिलहाल, मुझे अपना gpg पासवर्ड तीन बार (हस्ताक्षर करने के लिए, डिक्रिप्शन के लिए, प्रमाणीकरण के लिए) दर्ज करना होगा। यह असुविधाजनक है।

मैंने एक शेल स्क्रिप्ट के साथ आने की कोशिश की।

#!/bin/bash
set -x
set -e
set +o history

signing_key=77BB3C48
encryption_key=CE998547

tempfile="$(mktemp)"
echo "test" > testfile

unset passphrase || exit 1
read -sp 'Enter password. ' passphrase ; echo

exec 3<<<"$passphrase"

gpg2 --no-tty --use-agent --batch --yes --passphrase-fd 3 --sign-with "$signing_key" --clearsign "$tempfile"
gpg2 --no-tty --use-agent --verify "$tempfile.asc"

gpg2 --no-tty --use-agent --yes --armor --recipient "$encryption_key" --encrypt "$tempfile"

exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --decrypt --passphrase-fd 3 "$tempfile.asc"

लेकिन दुर्भाग्य से, पासवर्ड gnupg- एजेंट पासवर्ड कैश नहीं करता है। क्या इसे ठीक किया जा सकता है?

प्रणाली की जानकारी:

  • जब वह शेल स्क्रिप्ट का उपयोग नहीं कर रहा है, तो मेरे पास gnupg- एजेंट के साथ कोई समस्या नहीं है। जब मैं शेल में फ़ाइल को मैन्युअल रूप से साइन / डिक्रिप्ट करता हूं, तो पिनेंट्री दो बार पासवर्ड मांगता है, फिर रीबूट होने तक इसे कैश करता है।
  • डेबियन व्हीजी का उपयोग करना।
  • gpg संस्करण:

dpkg -l | grep gnupg

ii  gnupg                                        1.4.12-7+deb7u3                    i386         GNU privacy guard - a free PGP replacement
ii  gnupg-agent                                  2.0.22-3                           i386         GNU privacy guard - password agent
ii  gnupg-curl                                   1.4.12-7+deb7u3                    i386         GNU privacy guard - a free PGP replacement (cURL)
ii  gnupg2                                       2.0.22-3                           i386         GNU privacy guard - a free PGP replacement (new v2.x)

मैंने कुछ समय पहले gnupg-users मेलिंग सूची पर पूछा है , लेकिन कोई उत्तर नहीं।

शायद यह जवाब काम करेगा? शायद gpg-connect-agentआवश्यकता है?


मैं प्रभावित हूँ: exec 3<<<"$passphrase"मेरे लिए भी नया था ... और मैंने आपके द्वारा दिए गए उत्तर पर एक 250 प्रतिनिधि इनाम फेंका।
हौके लैजिंग

जवाबों:


3

नहीं है gnome-keyring-डेमॉन और समुद्री घोड़े जो कुंजी और पासवर्ड प्रबंधन बहुत आसान बना देता है।

मूल रूप से अगर आप gpg एजेंट के रूप में सूक्ति-कीरिंग-डेमन चला रहे हैं, तो यह आपके GPG कुंजी को स्वचालित रूप से अनलॉक करने की क्षमता रखता है। यह एक पासवर्ड कीरिंग को बनाए रखता है, जिसमें वेब साइट, GPG कुंजी, SSH कुंजी आदि जैसी चीज़ों के लिए पासवर्ड होता है। इस पासवर्ड कीरिंग को तब स्वयं पासवर्ड के साथ सुरक्षित किया जाता है। तो आप इसे अनलॉक करते हैं, और सूक्ति कीरिंग बाकी सब कुछ अनलॉक करता है।
एक अतिरिक्त बोनस के रूप में, gnome-keyring-daemon में एक "लॉगिन" कीरिंग है, जो कि अगर यह पासवर्ड आपके उपयोगकर्ता के पासवर्ड से मेल खाता है, तो जब आप लॉग इन करते हैं तो कीरिंग स्वचालित रूप से अनलॉक हो जाती है।


विन्यास

यह काम कैसे प्राप्त करें? बस सूक्ति-कीरिंग-डेमन और सीहोर स्थापित करें। पैकेज को आपके लिए सभी सिस्टम कॉन्फ़िगरेशन करना चाहिए। बस सुनिश्चित करें कि आप एक और कीरिंग डेमन या GPG एजेंट शुरू नहीं कर रहे हैं । जो भी अंतिम "जीत" शुरू करता है, और पीएएम स्टैक में सूक्ति कीरिंग शुरू होती है, इसलिए बहुत जल्दी।

यदि आपकी GPG कुंजियाँ संग्रहीत हैं ~/.gnupg, तो यह स्वचालित रूप से उन्हें उठाएगा और उनके लिए GPG एजेंट के रूप में कार्य करेगा। उसी में संग्रहीत SSH कुंजी के लिए जाता है~/.ssh

पहली बार जब आप निजी कुंजी का उपयोग करने का प्रयास करते हैं, तो आपको एक ऐसा संवाद मिलेगा जो इस तरह दिखता है: (मैंने इसे एक साधारण कमांड लाइन द्वारा ट्रिगर किया है gpg -d myfile.gpg) अनलॉकिंग कीरिंग
बस "जब भी मैं लॉग इन करता हूं, तो स्वचालित रूप से इस कीरिंग को अनलॉक करें"

अब हमने वास्तव में समुद्री यात्रा के बारे में बात नहीं की है। ऐसा इसलिए है क्योंकि यह कड़ाई से आवश्यक नहीं है। यह सब सिर्फ नियमित सूक्ति-कीरिंग-डेमन के साथ किया गया है। हालाँकि, सीहोर के साथ आप अपनी सभी कुंजियों और कीरिंग्स को देख और प्रबंधित कर सकते हैं। और यदि आप केंद्रीकृत प्रमाणीकरण (LDAP) का उपयोग करते हैं, तो आपको इसका उपयोग तब करना होगा जब आप अपने लॉगिन पासवर्ड को बदलने के लिए "लॉगिन" कीरिंग पर पासवर्ड को बदलने के लिए भी इसे मिलान कर सकें।

सीहोर - gpg कुंजियाँ


अन्य पासवर्ड

जैसा कि पहले बताया गया था, सूक्ति-कीरिंग-डेमन वेब साइट के पासवर्ड भी स्टोर कर सकते हैं। पिछली बार मैंने चेक किया था क्रोम इसका समर्थन करता है, लेकिन फ़ायरफ़ॉक्स नहीं करता है। हालांकि इसे काम करने के लिए एक चाल है।
डिफ़ॉल्ट रूप से आपके पास 2 कीरिंग्स, एक "लॉगिन" कीरिंग, और एक "डिफ़ॉल्ट" कीरिंग होगी। "डिफ़ॉल्ट" कीरिंग डिफ़ॉल्ट है (इसलिए नाम)। लेकिन यह एक अलग कीरिंग है, इसलिए यह स्वचालित रूप से अनलॉक नहीं होता है। सीहोर में, यदि आप "लॉगिन" कीरिंग पर राइट-क्लिक करते हैं, तो "डिफ़ॉल्ट रूप में सेट" करने का विकल्प है। इसे चुनें और इसे पासवर्ड के लिए उपयोग करना शुरू कर देंगे। मैं व्यक्तिगत रूप से सिर्फ "डिफ़ॉल्ट" को हटाता हूं और हर चीज के लिए "लॉगिन" का उपयोग करता हूं।


बहुत बुरा मैं कोई अशिष्ट उपयोगकर्ता नहीं हूं। मैंने किया sudo apt-get remove gnupg-agentऔर sudo apt-get install gnome-keyring seahorse। फिर /etc/X11/Xsession.d/999gnomekeyringनिम्न सामग्री के साथ एक फ़ाइल बनाई । eval $(/usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh) export GNOME_KEYRING_CONTROL GNOME_KEYRING_PID GPG_AGENT_INFO SSH_AUTH_SOCK(अन्यथा सूक्ति-कीरिंग केडीई में भी शुरू नहीं होगी।) अब, जब मैं चलता हूं, तो मुझसे gpg -d myfile.gpgपासवर्ड मांगा जाएगा और इसे कैश किया जाएगा, लेकिन मुझे इस संवाद के साथ कभी संकेत नहीं दिया गया ।
एडेलानोस

(यह बुरा है, क्योंकि मैं वापस आ गया हूं, जहां मैंने शुरुआत की थी। हस्ताक्षर कुंजी को अलग से कैश किया जाएगा।) (यहाँ टिप्पणी मार्कअप के साथ संभव नहीं है, जो eval और निर्यात लाइन के बीच एक नई रेखा है।)
एड्रेलनोस

मैं अपने डेस्कटॉप मैनेजर के लिए सूक्ति का प्रयोग नहीं करता। इसकी आवश्यकता नहीं है। सूक्ति केवल उनके डेस्कटॉप प्रबंधक की तुलना में बहुत अधिक करता है। आपको कुछ भी जोड़ना नहीं चाहिए /etc/X11/Xsession.d। माना जाता है कि PAM स्टैक में किया जाता है। आपके पास session optional pam_gnome_keyring.so auto_startएक या अधिक फ़ाइलों में एक प्रविष्टि होनी चाहिए /etc/pam.d। दुर्भाग्य से मैं डेबियन का उपयोग नहीं करता हूं इसलिए मुझे नहीं पता कि कौन सा है। अगर ऐसा नहीं है तो यह मुद्दा है।
पैट्रिक

जोड़ने के बिना /etc/X11/Xsession.d, ps aux | grep gnomeपता चलता है कि सूक्ति-कीरिंग-डेमन शुरू नहीं होता है। (फिर भी, इसे हटा दिया।) /usr/share/doc/libpam-gnome-keyring/README.Debianकहते हैं If you want to start gnome_keyring from another display manager, you need to add the following lines to the corresponding /etc/pam.d/?dm file: auth optional pam_gnome_keyring.so session optional pam_gnome_keyring.so auto_start(selines द्वारा हटाए गए नए समाचार)। जोड़ा /etc/pam.d/kdm, केडीएम को फिर से शुरू किया। कोई एजेंट लोड नहीं, कोई भी उपलब्ध नहीं है।
एडेलानोस

मुझे हानि हो रही है। यदि आप उपयोग कर रहे हैं kdmऔर आप इसे डालते हैं /etc/pam.d/kdm, तो इसे करना चाहिए। केवल एक चीज मैं सुझाव दे सकता हूं कि क्या आप अभी भी इस मार्ग को आगे बढ़ाने के लिए लॉग्स के माध्यम से खुदाई करना चाहते हैं। झूठी आशा के लिए क्षमा करें, सोचा कि यह आपके लिए एक सरल समाधान होगा।
पैट्रिक

0

मैंने कुछ जांच की है और परिणाम मेरे लिए आश्चर्यजनक है लेकिन सरल है:

जब इस तरह से कहा जाता है gpgके साथ संवाद नहीं है gpg-agent सब पर ! gpgइन सभी कार्यों को अपने दम पर करने में सक्षम है।

लेकिन अगर gpg-agentयह भी नहीं पता है कि कुछ हुआ है, तो यह शायद ही एक पासफ़्रेज़ को जान सकता है जो पहले नहीं जानता था।


ऐसा लगता है कि मैंने एक तरीका खोजा है, यह कैसे हल नहीं किया जा सकता है।
एड्रेलनोस

मेरा मूल प्रश्न अभी भी खुला है। (जो है Can I enter my gpg password just once and unlock all my sub keys (signing, decryption, authentication)?) मुझे आशा है कि पासवर्ड को किसी भी तरह से पाइप करना gpg-agentया gpg-connect-agentसंभव है।
adrelanos
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.