प्रति सत्र केवल एक बार पासफ़्रेज़ दर्ज करने के लिए gpg को कैसे कॉन्फ़िगर करें


18

क्या यह gpgइस तरह से कॉन्फ़िगर करने योग्य है कि मैं केवल एक बार पासफ़्रेज़ दर्ज करूँ, और यह पूरे सत्र के लिए काम करेगा (मैं उपयोग कर रहा हूँ Ubuntu/XFce)?

मुझे यकीन नहीं है कि कैसे gpgकाम करता है, ऐसा लगता है कि डिफ़ॉल्ट फ़ंक्शन पासफ़्रेज़ के लिए gpgपूछता है gpg-agentऔर एजेंट पासफ़्रेज़ के लिए पूछने के लिए पिन-एंट्री चलाता है।

मैं प्रति सत्र केवल एक बार पेन्ट्री-श्रापों का उपयोग करना चाहूंगा, इसलिए मैं अपना पासफ़्रेज़ पेस्ट कर सकता हूं (मेरे पास hexएक वाक्य से स्ट्रिंग है - मैं उपयोग करता हूं echo -n <SENTENCE> | str-hex) और पंजेफ्रेज़ को डाले बिना पंजे मेल से ईमेल पर हस्ताक्षर करता हूं (आप पंजे के साथ पिनेंट्री-शाप का उपयोग नहीं कर सकते हैं) मेल)।

जवाबों:


16

आप इस पृष्ठ पर वर्णित तकनीक का उपयोग कर सकते हैं:

http://fvue.nl/wiki/Debian_4.0:_Installing_gpg-agent

यहाँ है जिस्ट:

  1. Gpg-Agent और pinentry प्रोग्राम स्थापित करें:

    sudo apt-get install gnupg-agent pinentry-curses
    
  2. नीचे दी गई पंक्तियों को जोड़ें ~/.profile। किसी भी POSIX- पुष्टिकरण शेल में यह फ़ाइल शामिल होनी चाहिए।

    # Invoke GnuPG-Agent the first time we login.
    # Does `~/.gpg-agent-info' exist and points to gpg-agent process accepting signals?
    if test -f $HOME/.gpg-agent-info && \
        kill -0 `cut -d: -f 2 $HOME/.gpg-agent-info` 2>/dev/null; then
        GPG_AGENT_INFO=`cat $HOME/.gpg-agent-info | cut -c 16-`
    else
        # No, gpg-agent not available; start gpg-agent
        eval `gpg-agent --daemon --no-grab --write-env-file $HOME/.gpg-agent-info`
    fi
    export GPG_TTY=`tty`
    export GPG_AGENT_INFO
    

    लॉगिन करते ही यह छोटी स्क्रिप्ट सक्रिय हो जाएगी। यदि एजेंट नहीं चल रहा है, तो इसे शुरू किया जाएगा। जब एजेंट शुरू किया जाता है, तो यह दिखाता है कि इसे जोड़ने के लिए पर्यावरण चर कैसे सेट करें। स्क्रिप्ट इन मानों को सहेजती है ~/.gpg-agent-info, ताकि जब आप एक और लॉगिन सत्र शुरू करें तो स्क्रिप्ट चर को सही ढंग से सेट कर सके और इस तरह से एजेंट का उपयोग कर सके।

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


मैं इस लिपि का खुशी-खुशी उपयोग कर रहा हूं, लेकिन यह बेतरतीब ढंग से विफल होगी। आखिरकार, मैंने सशर्त GPG_PROCESS=`cut -d: -f 2 $HOME/.gpg-agent-info` if test -f $HOME/.gpg-agent-info && \ kill -0 ${GPG_PROCESS} 2>/dev/null && \ [[ ${GPG_PROCESS} == `pgrep -x -u "${USER}" gpg-agent` ]] ; thenइसे संशोधित किया और इसने ठीक काम किया। समस्या यह है कि ऊपर की स्क्रिप्ट जांचती है कि क्या प्रक्रिया .gpg-agent-infoजीवित है और संकेतों को स्वीकार करती है kill -0। यदि कोई प्रक्रिया है, लेकिन नहीं gpg-agent, तो हमें गलत व्यवहार मिलता है। संलग्न कोड की जाँच हमारे पास सही प्रक्रिया है।
wyer33
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.