मैं अपना पासवर्ड कैश करने के लिए GPG एजेंट कैसे प्राप्त कर सकता हूं?


21

मैं एक डेवलपर हूं, और मैं आमतौर पर साइन करता हूं कि मेरा Git मेरी GPG कुंजी के साथ है। मैं GPG एजेंट को OSX पर ठीक से काम कर पाने में सक्षम हो गया हूं, ताकि यह मुझसे प्रतिदिन एक बार मेरा पासवर्ड मांगे, लेकिन मुझे उबंटू 16.04 पर काम करने में समान समस्याएं हो रही हैं।

यहाँ मैं क्या कर रहा हूँ:

  • मुझे मेरा GPG कुंजी सेटअप मिल गया है / आदि।
  • मैं एक Git डायरेक्टरी में हूं।
  • मैं कुछ फ़ाइलों को Git में जोड़ता हूं।
  • मैं तब उन्हें कमिट करता हूं ( git commit), और एक GPG पासवर्ड अनुरोध प्राप्त करता हूं जो इस तरह दिखता है:

    $ git ci
    
    You need a passphrase to unlock the secret key for
    user: "Randall Degges <r@rdegges.com>"
    4096-bit RSA key, ID 8F700DA2, created 2016-04-05
    
    [master 1740961] blah
     1 file changed, 1 insertion(+)
    

समस्या यह है: हर बार जब मैं एक कमिट करता हूं, तो मुझे फिर से अपने जीपीजी पासवर्ड के लिए संकेत दिया जाता है।

मैं जो करना चाहता हूं वह जीपीजी एजेंट को 1 दिन के लिए मेरे पासवर्ड को कैश करने के लिए कॉन्फ़िगर करना है, इसलिए इसे केवल एक बार दर्ज करने की आवश्यकता है।

मैंने कई टन प्रलेखन और ब्लॉग पोस्टों के माध्यम से पढ़ा है, और यहाँ मैंने जो अब तक कोशिश की है ...

सबसे पहले, मैंने ~/.zshrcनिम्नलिखित सेट करने के लिए अपनी फ़ाइल (मैं zsh का उपयोग करता हूं) को संशोधित किया :

# GPG Agent
export GPG_TTY=$(tty)
export GPGKEY=8F700DA2

अब, मैं जो भी पढ़ता हूं, उसे अकेले जीपीजी-एजेंट को पुनरारंभ करने के बाद चाल करना चाहिए, लेकिन यह नहीं करता है।

इसलिए, अगली चीज़ जो मैंने की थी, उसे पृष्ठ ~/.gnupg/gpg-agent.confमें बताई गई एक फ़ाइल के रूप में परिभाषित किया गया था man gpg-agent:

# Set the default cache time to 1 day.
default-cache-ttl       86400
default-cache-ttl-ssh   86400

# Set the max cache time to 30 days.
max-cache-ttl           2592000
max-cache-ttl-ssh       2592000

इसका भी कोई असर नहीं हुआ।

मैंने विभिन्न ब्लॉग विधियों आदि की भी कोशिश की है, लेकिन कुछ भी काम नहीं करता है। क्या कोई मुझे कुछ संकेत दे सकता है जो मुझे याद आ रहा है?

जवाबों:


24

कैश समय को स्थापित करने के अलावा gpg-agent.conf, आपको यह भी सुनिश्चित करना होगा कि GnuPG वास्तव में अंतर कर रही है gpg-agent। GnuPG 2 और ऊपर की तरफ आम तौर पर होता है, लेकिन GnuPG 1 शाखा नहीं है। डिफ़ॉल्ट रूप से बायन gpgबाइनरी का उपयोग कर रहा है , जो (इस उत्तर को लिखने के समय) अभी भी GnuPG 1 है, जबकि GnuPG 2 को gpg2अधिकांश प्रणालियों पर स्थापित किया गया है।

अंत में, आपके पास दो संभावनाएँ हैं:


0

उपर्युक्त उत्तर के अलावा, आप gpgअपने सिस्टम में केवल डिफ़ॉल्ट को बदलने के gpg2बजाय बदल सकते हैं gpg1

यदि git config --global gpg.program gpg2आप के लिए काम करता है, लेकिन आप अपने git config (मेरे मामले में क्योंकि मैं macOS पर एक ही कॉन्फिगर का उपयोग करता हूं) को छोड़ना नहीं चाहता, तो आप बस डिफ़ॉल्ट को स्वैप कर सकते gpgहैं।

मैंने यहाँ उस गाइड का अनुसरण किया , जो सिर्फ:

$ sudo mv /usr/bin/gpg /usr/bin/gpg1
$ sudo update-alternatives --verbose --install /usr/bin/gpg gnupg /usr/bin/gpg2 50

यह gpg1पुराना gpgबाइनरी बनाता है , और सिमलिंक /usr/bin/gpg -> /usr/bin/gpg2(नाम gnupg और प्राथमिकता 50 के साथ)।

डिफ़ॉल्ट रूप gpgसे सिद्धांत बदलने से आपके सिस्टम पर कुछ पैकेज टूट सकते हैं, लेकिन डेबियन स्ट्रेच (डेबियन का वर्तमान स्थिर संस्करण) एक समान तरीके से डिफ़ॉल्ट के रूप में सेट होता हैgpg2gpg , इसलिए आपको बहुत अधिक समस्याएं नहीं होनी चाहिए।

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