एक्स-सत्र के बिना सूक्ति-कीरिंग उपयोग


14

मेरा उपयोग मामला यह है कि मेरे पास एक हेडलेस सर्वर है जिस पर सॉफ्टवेयर डेवलपमेंट किया जाता है। मैं ussually SSH कनेक्शन के लिए X11 को अग्रेषित करने में सक्षम करता हूं, लेकिन मैं धीमे कनेक्शन के साथ दूर के स्थानों के लिए नहीं जा सकता।
मुझे अपने git क्रेडेंशियल्स के लिए सुरक्षित भंडारण और कैशिंग की आवश्यकता है क्योंकि मैं नियमित रूप से एक पेड़ में 18-20 रिपॉजिटरी के साथ काम करता हूं, इसलिए मैं git क्रेडेंशियल-ग्नम-कीरिंग को git क्रेडेंशियल.हेलर के रूप में उपयोग कर रहा हूं, जो कामेच्छा-कीरिंग का उपयोग करके संचार करता है सूक्ति-कीरिंग-डेमन। समाधान का परीक्षण करने के लिए, मैंने एक मॉनिटर के साथ एक पीसी सेटअप किया, सिस्टम पर डिफ़ॉल्ट रूप से काम करने वाले कीरिंग की पुष्टि की, फिर एसएसएच के साथ इसकी कोशिश की। यह X11 अग्रेषण के साथ काम करता है, लेकिन इसके बिना काम नहीं करता है।

जब मैं X11 अग्रेषण के बिना जुड़ा हुआ हूं, तो कीरिंग के दौरान निम्न त्रुटि का परिणाम होता है, और टूल कमांड-लाइन पर संकेत देने के लिए वापस आ जाता है:

** (process:18305): CRITICAL **: Error communicating with gnome-keyring-daemon

जांच से पता चलता है कि आधार समस्या यह है कि सूक्ति-कीरिंग-डेमॉन से बात करने के लिए डब का उपयोग करने के लिए कनेक्शन की उम्मीद है। यदि कोई X11 सत्र नहीं है, तो dbus शुरू नहीं हुई है, इसलिए कनेक्ट करने के लिए सूक्ति-कीरिंग-डेमॉन और libgnome-keyring के लिए कोई सामान्य dbus बस नहीं है।

मैंने पाया है कि दो समाधान दूसरों ने इस समस्या के लिए पोस्ट किए हैं, हालांकि न तो मेरे लिए ठीक से काम करता है।

  1. मौजूदा सत्र से एक DBUS पोर्ट प्राप्त करें जो X11 का उपयोग करता है
  2. मैन्युअल रूप से एक नया DBUS पोर्ट लॉन्च करें

जब एक मौजूदा DBUS पोर्ट के साथ संलग्न किया जाता है, तो आधार अवधारणा एक मौजूदा लॉगिन सत्र की PID को खोजने के लिए है, उस PID के लिए पर्यावरण को procfs से डंप करें, इसे खोजें DBUS_SESSION_BUS_ADDRESS, और इसे वर्तमान वातावरण में निर्यात करें। चूँकि यह सब सत्रों में उपयोग की जा रही DBUS बस को प्रकाशित करने के लिए उपयोग किया जाने वाला चर है, इसको सेट करके सत्र में सब कुछ एक सामान्य DBUS बस पर संवाद करने की अनुमति देनी चाहिए, हालाँकि यह एक अलग सत्र से जुड़ी बस है।
यहाँ स्रोत:
https://ubuntuforums.org/showthread.php?t=1059023

https://ask.fedoraproject.org/en/question/45246/error-communicating-with-gnome-keyring-daemon-in-ssh-ssh सत्र /

कोड मेरे .bashrc में ssh लॉगिन पर निष्पादित किया जा रहा है:

if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] ; then
    local myPID=`pgrep "(.*session|fluxbox)" | head -n1`
    if [ -n "$myPID" ] ; then
        local myVar=`cat /proc/${myPID}/environ | grep -z "^DBUS_SESSION_BUS_ADDRESS=" | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`
        if [ -n "$myVar" ] ; then
            export DBUS_SESSION_BUS_ADDRESS=$myVar
        fi
    fi
fi

दूसरी विधि, सत्र के लिए मैन्युअल रूप से DBUS लॉन्च करना, dbus-launchएक नया सत्र बनाने और DBUS_SESSION_BUS_ADDRESSपर्यावरण के लिए सेट करने के लिए उपयोग करना शामिल है, फिर सभी आवश्यक सेवाओं के साथ सूक्ति-कीरिंग-डेमन शुरू करना ताकि यह हमारे द्वारा बनाए गए DBUS बस पते को देख सके। खाली बस पते के बजाय। इस समाधान के लिए gnome-keyring-daemon की आवश्यकता हो सकती है या नहीं प्रति सिस्टम एक उदाहरण के बजाय प्रति सत्र एक उदाहरण को चलाने के लिए परिवर्तित किया जा सकता है, लेकिन यह स्पष्ट नहीं है।
स्रोत:
संख्या 8 से शुरू: https://support.wandisco.com/index.php?/Knowledgebase/Article/View/362/17/how-to-setup-encrypted-svn-password-storage-use-gnome- कीरिंग-इन- ए-एसएचएस सत्र

उन्नयन के मामले में परिवर्तन को खोने के बिना एक डबस सेवा की "एक्सेक" लाइन को कैसे संशोधित किया जाए
कोड मेरे .bashrc में ssh लॉगिन पर निष्पादित किया जा रहा है:

# then DBUS wasn't started for this session and needs to be
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] ; then
    # start a new dbus session and make sure the variables are exported (automatic output)
    eval `dbus-launch --sh-syntax`

    # make sure gnome-keyring-daemon is using all the necessary components (it may not be by default)
    # Capture the output, which is a series of variable setting commands, one on eachline, and
    # export them while setting them
    while read -r LINE
    do
        export $LINE
    done <<< $(gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh)
fi

दोनों समाधान एक ही असफल परिणाम देते हैं। तुरंत त्रुटि उत्पन्न करने के बजाय सूक्ति-कीरिंग-डेमन के साथ संचार नहीं किया जा सकता है, इस प्रक्रिया में थोड़ी देर के लिए लटका होता है और फिर इस आउटपुट का उत्पादन होता है:

Gkr-Message: secret service operation failed: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

** (process:31155): CRITICAL **: Error communicating with gnome-keyring-daemon

मैं स्पष्ट नहीं हूँ कि gnome-keyring-daemon DBUS के साथ कैसे बातचीत कर रहा है, लेकिन त्रुटि परिणामों के दूसरे सेट से इसकी स्पष्ट है कि यह एक नई बनाई गई DBUS बस, या एक अलग DBUS बस पर क्रॉस-प्रोसेस के माध्यम से उपलब्ध नहीं है। मैंने जो कुछ पाया है, उससे पता चलता है कि सूक्ति-कीरिंग-डेमॉन को इससे पहले शुरू होने वाले डीबीयूएस की आवश्यकता हो सकती है, लेकिन यह स्पष्ट नहीं है कि उपयोग के लिए मामला है (कामोन्माद-कीरिंग) या डेमन।

मुझे यह काम कैसे मिलेगा?


उपयोगकर्ता कुंजीकरण (डेमॉन) से पहले डब सत्र शुरू करने की आवश्यकता है, जब आप x11 का उपयोग करते हुए अग्रेषण करते हैं, तो आप स्थानीय कीरिंग का उपयोग रिमोट से नहीं कर रहे हैं ...
intika

जैसा कि पहले दृष्टिकोण से पता चला था, मैंने कीबिंग डेमन शुरू होने से पहले डबस सत्र शुरू किया था। और आप कह रहे हैं कि जब मैं अपने रिमोट सिस्टम पर सूक्ति-कुंजी-रिंग डेमॉन का उपयोग करने वाली एक कमांड निष्पादित करता हूं, तो यह वहां के dbus सत्र से जुड़ने के लिए $ DISPLAY सॉकेट के माध्यम से मेरे स्रोत सिस्टम पर वापस कनेक्शन बना रहा है? यह बहुत ही असंभव लगता है, लेकिन मैं इसके बारे में पूरी तरह से असहमत होने के लिए पर्याप्त नहीं जानता। Dbus एक चित्रमय उपकरण नहीं है, यह एक अंतर-प्रक्रिया संचार उपकरण है जो ग्राफ़िकल अनुप्रयोगों द्वारा बहुत अधिक उपयोग किया जाता है।
mtalexan

बस यहाँ spitballing, लेकिन क्या आपने xvfb का उपयोग करके "नकली" एक xsession का प्रयास किया है। यह काम कर सकता है यदि आप इसे चलाने के लिए (और इनिशियलाइज़िंग समाप्त) करते हैं और DISPLAY var का निर्यात करते हैं जैसे कि dbus को पता है कि एक Xserver चल रहा है
TAAPSogeking

जवाबों:


1

यह एक मूर्खतापूर्ण जवाब हो सकता है ... लेकिन, gnome-keyring को X11 सत्र तक पहुंच की आवश्यकता है , कम से कम मास्टर कुंजी के लिए आपका संकेत देने के लिए। तो, यह असंभव है इसे चलाने के लिए, डिजाइन द्वारा ... है ना?

संपादित करें: शायद यह असंभव नहीं है । इस पोस्ट को देखें , आपकी समस्या के समान है:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.