gpg- एजेंट और पिनेंट्री-शाप के साथ git टैग


5

Git -u के साथ gpg- एजेंट का उपयोग करते समय, मुझे तुरंत निम्न त्रुटि मिल रही है:

gpg: cancelled by user
gpg: skipped "my@email.com": bad passphrase
gpg: signing failed: bad passphrase
error: gpg failed to sign the data
error: unable to sign the tag

GPG-agent.conf:

pinentry-program /usr/bin/pinentry-curses

जब मैं पहले (के माध्यम से gpg -e -s test.txt) कुंजी को अनलॉक करता हूं , तो git tag -uकमांड कुंजी को उठाता है और उम्मीद के मुताबिक टैग पर हस्ताक्षर करता है।

यह i3 wm का उपयोग करके ubuntu 13.10 पर है। मुझे संदेह होगा कि गनोम-कीरिंग किसी तरह से बाधा डाल रहे हैं ... कुछ, लेकिन एक रास्पबेरी पाई पर, आर्चलिनक्स-आर्म को चलाना, यह उसी तरह से काम करता है, लेकिन थोड़े अलग मुद्दे के साथ - git tag -uकमांड चलाने के बाद , यह पूछता है अनलॉक करने के लिए एक पासवर्ड, लेकिन कोई पेंट्री या प्रांप्ट दिखाई नहीं देता है। एक समय (लगभग 30 सेकंड) के बाद, यह निम्नलिखित के साथ विफल हो जाता है:

gpg: problem with the agent: Line passed to IPC too long
gpg: skipped "my@email.com": Operation cancelled
gpg: signing failed: Operation cancelled
error: gpg failed to sign the data
error: unable to sign the tag

दोबारा, एक बार जब मैं gpg -sgpg- एजेंट में क्रेडेंशियल्स को कैश करने के लिए एक सीधे एक मनमानी फ़ाइल के साथ कुंजी को अनलॉक करता हूं , तो टैग को मुद्दे के साथ हस्ताक्षरित किया जाता है।

मेरी धारणा यह है कि कुछ मेरे पेंट्री-शापों की शुरुआत के साथ अजीब है। मैं / usr / bin / pinentry को इंगित करने के लिए / usr / bin / pinentry पहले ही अपडेट कर चुका हूं, लेकिन समस्या बनी रहती है।

मैं क्या गलत कर रहा हूँ, और मुझे gpg / pinentry के साथ अच्छा खेलने के लिए कैसे काम करना है?

  • ubuntu gpg संस्करण: 1.4.14
  • आर्कलिनक्स-आर्म gpg संस्करण: gnupg-2.0.22-1

संपादित करें: zsh चल रहा है। यहाँ gpg एजेंट के लिए प्रासंगिक बिट दिया गया है:

if [ $EUID -ne 0 ] ; then
    envfile="$HOME/.gnupg/gpg-agent.env"
    if [[ -e "$envfile" ]] && kill -0 $(grep GPG_AGENT_INFO "$envfile" | cut -d: -f 2) 2>/dev/null; then
        eval "$(cat "$envfile")"
    else
        eval "$(gpg-agent --daemon --write-env-file "$envfile")"
    fi
    export GPG_AGENT_INFO  # the env file does not contain the export statement
fi

जब मैं $ ( /dev/pts/16ट्टी) का पालन ​​करता हूं (उदाहरण के लिए:) तो पहले से ही साझेदारी है user:tty

जवाबों:


4

जब आप एक नया TTY शुरू करते हैं तो आपको हर बार GPG_TTY वैरिएबल को एक्सपोर्ट करना होगा (bash / zsh rc files से भी किया जा सकता है):

export GPG_TTY=$(tty)

0

Pinentry ncurses संवाद के साथ समस्याएं TTY के स्वामित्व से संबंधित हैं पिनट्री उपयोग करने की कोशिश करती है (यदि आप शुरू में उपयोगकर्ता के रूप में लॉगिन करते हैं और उदाहरण के लिए su)।

इसे ठीक करने के लिए /etc/profile.d/gpg-agent.sh में निम्न स्क्रिप्ट रखें (आप ifकिसी मल्टी उपयोगकर्ता सिस्टम पर बाहरी को छोड़ना चाहते हैं या स्थिति को बदल सकते हैं! =):

if [ "$(id -un)" = "root" ] ; then
    envfile="$HOME/.gnupg/gpg-agent.env"
    if [[ -e "$envfile" ]] && kill -0 $(grep GPG_AGENT_INFO "$envfile" | cut -d: -f 2) 2>/dev/null; then
        eval "$(cat "$envfile")"
    else
        eval "$(gpg-agent --daemon --enable-ssh-support --write-env-file "$envfile")"
    fi

    export GPG_AGENT_INFO    # the env file does not contain the export statement
    export SSH_AUTH_SOCK     # enable gpg-agent for ssh

    GPG_TTY=$(tty)
    chown $USER:tty $GPG_TTY # make pinentry-ncurses work
fi

संकेत के लिए धन्यवाद - हालांकि, मैं पहले से ही अपने .zshrc में ऐसा कुछ मिला है, जो केवल चाउने को छोड़कर, लेकिन यह अभी भी अच्छा नहीं है। अनुमतियाँ /dev/ptsपहले से ही सही ढंग से सेट हैं। चाउने को जोड़ने से समस्या हल नहीं हुई। आपके स्निपेट और मेरे बीच का एकमात्र अंतर यह है कि मैं अपने gpg एजेंट को ssh के लिए सक्षम नहीं कर रहा हूँ। मैं यह नहीं देख सकता था कि फर्क करने से क्या ऐसा होगा?
जेफ वोंग

मुझे डुप्लीकेट / डुप्लिकेट हस्ताक्षर बैकअप के साथ ऐसी ही समस्या थी - इसका समाधान स्वचालित वातावरण वातावरण में GnuPG से था । अल्पाइन लिनक्स पर मुझे अभी भी सही ढंग से काम करने के लिए पिनेंट्री-शाप के लिए चाउन की आवश्यकता है (इसलिए आप आर्क पर भी कर सकते हैं) - डेबियन को टटी पर चाउन की जरूरत नहीं है।
स्टुअर्ट कार्डाल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.