मैंने इस पर फिर से विचार करने का फैसला किया और यह पता लगाया कि यह कैसे काम करता है। पासवर्ड स्टोर करने के लिए 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
gpg-connect-agent
?