Pinentry gpg- एजेंट और SSH के साथ विफल हो जाता है


12

मैं Fedora 22 चला रहा हूं। मैं अपने SSH कनेक्शन को अपने PGP प्रमाणीकरण उपकुंजी का उपयोग करके प्रमाणित करने की कोशिश कर रहा हूं, जो मेरे Yubikey Neo पर स्थित है।

मेरे पास निम्न के रूप में gpg- एजेंट को शुरू करने वाली एक systemd इकाई है:

/usr/bin/gpg-agent --homedir=%h/.gnupg --daemon --use-standard-socket

और मैंने विन्यास में SSH समर्थन को सक्षम किया है:

enable-ssh-support
pinentry-program /usr/bin/pinentry-gtk

सेटअप के अन्य भागों को जोड़ने शामिल keygrip करने के लिए अपने कुंजी ~/.gnupg/sshcontrol, फ़ाइल मेरी जोड़ने सार्वजनिक कुंजी रिमोट होस्ट को और घोषणा वातावरण चर

विश्व स्तर पर विभिन्न लॉग को देखकर लगता है कि सेटअप काम कर रहा है, मैं देख सकता हूं कि एसएसएच कुंजी पाता है लेकिन वास्तव में इसके साथ हस्ताक्षर करने में विफल हो रहा है। यदि मैं लॉग से gpg-agentदेखता हूं, तो मैं देख सकता हूं कि यह pinentryप्रोग्राम लॉन्च करने में विफल हो रहा है और इसलिए, पिन कोड के लिए अनुरोध नहीं कर रहा है:

2015-07-22 23:23:28 gpg-agent[6758] DBG: error calling pinentry: Ioctl() inappropriate for a device <Pinentry>
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_8 -> BYE
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_7 -> CAN
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_7 <- ERR 100663573 The IPC call was canceled <SCD>
2015-07-22 23:23:28 gpg-agent[6758] smartcard signing failed: Ioctl() inappropriate for a device
2015-07-22 23:23:28 gpg-agent[6758] ssh sign request failed: Ioctl() inappropriate for a device <Pinentry>

हम यहां देखते हैं कि जब एसएसएच के साथ संयोजन में उपयोग किया जाता है, तो पिनेंट्री कॉल करते समय कुछ ioctl कॉल विफल हो रहा है। हालाँकि अगर मैं निम्नलिखित चलाता हूँ:

$ echo "Test" | gpg2 -s

पिन विंडो पॉप अप कर रहा है और यह सब ठीक काम कर रहा है।

क्या आप मुझे यह समझने में मदद कर सकते हैं कि इस सेटअप और SSH के साथ क्या हो रहा है?


मैं एक ऐसी ही हो रही थी "एजेंट के साथ समस्या: के लिए डिवाइस अनुचित ioctl" पाइप के उत्पादन की कोशिश कर त्रुटि tarके लिए gpg2मैक ओएस एक्स और पर विगो के जवाब मेरे लिए यह संकल्प लिया।
केनी एविट जूल

जवाबों:


17

खैर, यह मेरे लिए काम किया:

export GPG_TTY=`tty`

.bashrcइसे अपने में जोड़ें या सिर्फ gpg का उपयोग करने से पहले इसे किक करें।


10

मुझे इसका जवाब GPG वेबसाइट पर ही मिला है। एजेंट पिनट्री विंडो प्रदर्शित करने के लिए किस स्क्रीन पर खोजने में विफल रहा था। मुझे बस अपनी .*shrcफ़ाइल में निम्नलिखित डालना था :

echo "UPDATESTARTUPTTY" | gpg-connect-agent > /dev/null 2>&1

धन्यवाद! इससे समस्या को इंगित करने में मदद मिली (पिनेंट्री विंडो दिखाई नहीं दे रही है)। हालांकि, उपरोक्त कमांड मेरे लिए काम नहीं करता है। अगर मैं gpg-connect-agentइसे आउटपुट करता हूं can't connect to the agent: IPC connect call failedgpg-agentठीक चल रहा है और GPG_AGENT_INFOenv var ठीक से सेट किए गए हैं।

दिलचस्प है कि उपरोक्त मुद्दे export GPG_AGENT_INFOको .bashrcठीक करने के लिए gpg-connect-agent IPC connect call failed। मैंने इसे पहले नहीं जोड़ा था क्योंकि echo $GPG_AGENT_INFOमेरा खोल ठीक था .. लेकिन यह पता चला कि यह अभी भी आवश्यक है।

1
मुझे यह जानकर बहुत अच्छा लगा कि कितने लोगों ने इस कमांड को कॉपी किया और सोचा कि उनके पास अपने उपयोगकर्ता फ़ोल्डर में "1" नामक एक फाइल क्यों है ..
केनान सुलेमान

1
@KenanSulayman की अच्छी पकड़। मैंने आज्ञा को ठीक किया।
स्पैक

2
"एजेंट पिनट्री विंडो को प्रदर्शित करने के लिए किस स्क्रीन पर खोजने में विफल रहा था ..." - लोल ... 1980 का युग मंदबुद्धि सॉफ्टवेयर। कोई आश्चर्य नहीं कि बहुत कम लोग GPG का उपयोग करते हैं। शायद GPG को मैं जिस पर काम कर रहा हूं उसे चुनना चाहिए और बेकार त्रुटि संदेश प्रदान करना बंद करना चाहिए।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.