मैं ssh-agent + ssh-add के साथ gpg- एजेंट का उपयोग कैसे करूँ?


15

ssh-agentउपयोग करने के लिए बहुत आसान है, मैं इसे शुरू करता हूं और उपयोग करने वाली चाबियाँ जोड़ता हूं ssh-add keyfile। प्रक्रिया को मारने के बाद ssh-agent, सभी फाइलें चली गई हैं।

मैं उसी व्यवहार को कैसे प्राप्त कर सकता हूं gpg-agent? सबसे करीबी कार्यक्रम मुझे मिला gpg-preset-passphrase। लेकिन के मैनुअल पेज को देखते हुएgpg-agent , ऐसा लगता है कि निजी कुंजी संग्रहीत करने के लिए एक निर्देशिका बनाई गई है।

मैं गलत हो सकता है, इसलिए मैं सोच रहा हूं कि मैं gpg-agentइस तरह से कैसे सेटअप कर सकता हूं कि कोई फाइल / निर्देशिका नहीं बनाई जाती है? यदि यह संभव नहीं है, तो + gpg-agentजैसे काम करने के अन्य सुझावों का भी स्वागत किया जाएगा। मैं सीहोर जैसे जीयूआई समाधान की तलाश में नहीं हूं।ssh-agentssh-add


क्या आपने जाँच की है gpg-connect-agent?
स्मिथमैक्स

@Smithamax नहीं, लेकिन यह उसी कार्यक्षमता का उपयोग करने लगता है gpg-preset-passphrase। मैं भाग गया gpg-connect-agent, एक शेल मिला और setkey IDOFMYPRIVATEKEYHEREउसके बाद निष्पादित किया गया preset_passphraseऔर आईडी के परिणामस्वरूप "ERR 67108924 असमर्थित <GPG-agent> - no --allow-
preset

जवाबों:


13

मैंने इस पर फिर से विचार करने का फैसला किया और यह पता लगाया कि यह कैसे काम करता है। पासवर्ड स्टोर करने के लिए GPG शब्द "कैश" का उपयोग करता है। अधिकतम भंडारण समय पर दो बाधाएं लगाई जा सकती हैं:

  • प्रारंभ में एक पासफ़्रेज़ को रखने का समय शुरू किया गया था।
  • पासफ़्रेज़ को रखने का समय, क्योंकि यह आखिरी बार पहुँचा था।

इसके अलावा, दोनों बाधाओं के लिए दो भिन्नताएं मौजूद हैं, एक GPG कुंजी के लिए और एक SSH कुंजी के लिए (यदि समर्थन सक्षम था)।

से प्रासंगिक मैनुअल पेज प्रविष्टियाँ gpg-agent(1):

   --default-cache-ttl n
          Set  the  time a cache entry is valid to n seconds.  The default
          is 600 seconds.

   --default-cache-ttl-ssh n
          Set the time a cache entry used for SSH keys is valid to n  sec‐
          onds.  The default is 1800 seconds.

   --max-cache-ttl n
          Set the maximum time a cache entry is valid to n seconds.  After
          this time a cache entry will be expired  even  if  it  has  been
          accessed recently.  The default is 2 hours (7200 seconds).

   --max-cache-ttl-ssh n
          Set the maximum time a cache entry used for SSH keys is valid to
          n seconds.  After this time a cache entry will be  expired  even
          if  it has been accessed recently.  The default is 2 hours (7200
          seconds).

Passphrases को हमेशा कैश किया जाता है (मेमोरी में, डिस्क पर नहीं! Git repo के साथ सत्यापित $HOME), इसलिए इसके लिए कोई स्पष्ट जानकारी नहीं है ssh-add। उदाहरण के लिए, डमी डेटा पर हस्ताक्षर करने से कैश पहले ही चालू हो जाता है:

$ echo | gpg -s >/dev/null
(passphrase requested
$ echo | gpg -s >/dev/null
(signing proceeds without asking for passphrase)

Gpg-agent की कैश सेटिंग में स्थायी परिवर्तन करने के लिए, ~ / .gnupg / gpg-agent.conf` संपादित करें और कुछ इस तरह जोड़ें:

default-cache-ttl  60     # Expire GPG keys when unused for 1 minute
max-cache-ttl     600     # Expire GPG keys after 10 minutes since addition

मैंने SSH एजेंट समर्थन को निर्दिष्ट करके सक्षम करने का प्रयास किया है enable-ssh-support, लेकिन इससे gpg- एजेंट आपको कुंजी को एन्क्रिप्ट करने के लिए दूसरी कुंजी के लिए कहता है, और फिर आपकी निजी कुंजी को संग्रहीत करता है ~/.gnupg/private-keys.d/। मेरे लिए नहीं, मैं एक दोहरी ssh- एजेंट / gpg- एजेंट दृष्टिकोण के लिए फिर से रहना होगा।

कुछ बोनस सुझाव:

  • max-cache-ttl-sshउदाहरण के लिए, कुंजी जोड़ते समय SSH एजेंट का समकक्ष निर्दिष्ट किया जा सकता है:ssh-add -t 600 ~/.ssh/id_rsa
  • एजेंट में GPG पासफ़्रेज़ के भंडारण को रोकने के लिए, एजेंट को अक्षम करें। नए GPG संस्करणों में विकल्प --no-use-agentको नजरअंदाज कर दिया जाता है, लेकिन आप संबंधित वातावरण-चर को साफ करके एजेंट को इस्तेमाल होने से रोक सकते हैं। ऐसा करने के कुछ तरीके:

    echo | GPG_AGENT_INFO= gpg -s         # temporary
    export GPG_AGENT_INFO=; echo | gpg -s # until the current shell is closed
    

मेरी मशीन पासफ़्रेज़ के लिए बार-बार पूछती रहती है
उज्ज्वल

@donbright क्या आप सुनिश्चित हैं कि केवल एक gpg-agentसक्रिय है? (प्रक्रिया सूची देखें, उदाहरण के लिए ps u -C gpg-agent)। क्या कैश टाइमआउट उचित रूप से सेट है? यदि आप इसे (SSH) प्रमाणीकरण के विपरीत हस्ताक्षर करने के लिए उपयोग करते हैं, तो क्या ignore-cache-for-signingविकल्प परेशान है?
लेकेन्स्टाइन

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