2016-04-12 9 views
5

के रूप में gnome-keyring के साथ गिट क्रेडेंशियल सहायक का उपयोग करते समय त्रुटि मैं एसएसएल का उपयोग करने वाले हमारे गिट सर्वर से कनेक्ट करते समय सुरक्षित रूप से क्रेडेंशियल स्टोर करने का एक तरीका ढूंढ रहा था। मैं @ जेम्स वार्ड (केवल संपादित मैं मैं के लिए Git (https://stackoverflow.com/a/14528360/6195194)सूडो

sudo apt-get install libgnome-keyring-dev 
cd /usr/share/doc/git/contrib/credential/gnome-keyring 
sudo make 
git config --system credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring 

हमारे "वैश्विक" config के बजाय हमारे "प्रणाली" कॉन्फिग अद्यतन किया गया था बनाया द्वारा इस सुझाव में आए मैं तो

git clone https://ipaddress/git/repo.git 
चला सकते हैं

और क्रेडेंशियल सहायक अपनी उपलब्धियों को स्टोर करेगा, लेकिन जब मैं निम्नलिखित चलाएँ:

sudo git clone https://ipaddress/git/repo.git testfolder 

यह मुझे निम्न त्रुटि

0,123,516 देना
** (process:3713): CRITICAL **: Error communicating with gnome-keyring-daemon 

मुझे कभी-कभी सूडो गिट क्लोन चलाने की आवश्यकता होती है क्योंकि कभी-कभी निर्देशिका जहां मुझे क्लोन बनाने की आवश्यकता होती है। किसी भी सहायता की सराहना की जाएगी।

संस्करण मैं उपयोग कर रहा हूँ: - Git संस्करण 1.9.1 - Ubuntu सर्वर 14.0.4

अग्रिम धन्यवाद! -Richard ओ

उत्तर

0

मुझे कभी-कभी सूडो गिट क्लोन चलाने की आवश्यकता होती है क्योंकि कभी-कभी निर्देशिका जहां मुझे क्लोन बनाने की आवश्यकता होती है। किसी भी मदद

सराहना की जाएगी

फ़ोल्डर जिसमें आप रिपोजिटरी क्लोन करने की कोशिश में जड़ द्वारा बनाया गया था, ताकि आप न लिखने के लिए या इसके तहत फ़ोल्डर बनाने के लिए जब तक आप रूट (sudo) कर रहे हैं की अनुमति है, अनुमति सेट (chmod या chown) और आप फ़ोल्डर में क्लोन करने में सक्षम होंगे।

chmod 755 /path 
+0

आपकी मदद के लिए धन्यवाद और यह बहुत समझ में आता है। एक अन्य आवश्यकता ने मुझे HTTPS की बजाय एसएसएच कुंजी का उपयोग करने के लिए मजबूर किया ताकि मुझे अब गिट-क्रेडेंशियल-gnome-keyring का उपयोग करने की आवश्यकता न हो। लेकिन मैंने एक समर्पित गिट खाता बनाना सुनिश्चित किया और उन्हें आपकी सहायता के आधार पर सूडो का उपयोग किए बिना एक निश्चित निर्देशिका में अपनी खुद की रिपॉजिटरीज़ बनाने के लिए पहुंच प्रदान की और यह बहुत अच्छा काम कर रहा है! –

1

sudo का उपयोग रूट के रूप में आदेश चलाता है। यह आपके sysadmin पूछने जैसा है, यदि आपके पास कोई है, तो आपके लिए कमांड चलाने के लिए। root उपयोगकर्ता संबंधी विकास कुछ भी करने के लिए नहीं है, और इसलिए gitरूट के रूप में इस्तेमाल किया जा करने के लिए नहीं है।

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

तो, जवाब है: "ऐसा मत करें"। यदि आपको वास्तव में किसी विशेष निर्देशिका में क्लोन करने की आवश्यकता है, तो कोडविज़ार्ड के उत्तर में सुझाए गए अनुसार उस निर्देशिका पर स्वयं को अनुमति दें। असल में, अगर आपको ऐसी निर्देशिका में क्लोन करने की आवश्यकता है जहां आपको अनुमति नहीं है, तो खुद से पूछें कि क्या आप कुछ गलत कर रहे हैं: सिद्धांत रूप में, ऐसा नहीं होना चाहिए (मेरा अनुमान है: आपने पहले से ही sudo का उपयोग बहुत पहले किया था और यही कारण है कि आपके यहां और वहां उम-लेखन योग्य निर्देशिकाएं हैं)।

+2

आपकी टिप्पणी के लिए धन्यवाद। खुद से पूछना "क्यों" आप सूडो का उपयोग कर रहे हैं हमेशा रहने के लिए एक अच्छा अभ्यास है। –

26

sudo के उपयोग के अलावा, ध्यान दें कि 2016 में, libgnome-keyring सूक्ति लिए विशिष्ट है और (January 2014, actually के बाद से) अब मान्य नहीं है।

गिट 2.11+ (क्यू 4 2016) में libsecret का उपयोग करके एक नया क्रेडेंशियल सहायक शामिल होगा।

देखें [प्रतिबद्ध 87d1353] (https://github.com/git/git/commit/87d1353a6a133aafd2ef29ba6c740a8d3d71dadb) (0 9 अक्टूबर 2016) Mantas Mikulėnas (grawity) द्वारा।
(, में [bfe800c प्रतिबद्ध] (https://github.com/git/git/commit/bfe800c9d758b4dd760e8457bc79d35362b1effd) Junio C Hamano -- gitster -- द्वारा विलय 26 अक्टू 2016)

एक नया क्रेडेंशियल सहायक कि XDG सीक्रेट सर्विस एपीआई के कार्यान्वयन से जोड़ दिया गया है के साथ के माध्यम से "libsecret" में बात करती है contrib/credential/

यह libsecret का उपयोग करता है जो XDG Secret सेवा API के अन्य कार्यान्वयन का समर्थन कर सकता है।

  1. आप libsecret स्थापित कर सकते हैं और साथ विकास पुस्तकालयों:

    sudo apt-get install libsecret-1-0 libsecret-1-dev

  2. तो फिर तुम क्रेडेंशियल प्रबंधक

    cd /usr/share/doc/git/contrib/credential/libsecret (कॉपी का निर्माण करने की जरूरत है क्रेडेंशियल/libsecretsource से फ़ोल्डर, अगर यह ऑटोमा इंस्टॉल नहीं है tically)

    sudo make

  3. अंत में, आप इंगित करना चाहिए Git अपने config में नई बनाई गई फ़ाइल के लिए:

    git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret


the comments में mati865 द्वारा बताया गया है :

यह ध्यान दिया जाना चाहिए कि आर्क और फेडोरा जैसे कुछ डिस्ट्रोज़ बाइनरी और स्रोत दोनों के रूप में सहायक सहायता प्रदान करते हैं। आर्क पर

  • Libsecret बाइनरी: /usr/lib/git-core/git-credential-libsecret, और
  • Libsecret द्विआधारी फेडोरा पर: /usr/libexec/git-core/git-credential-libsecret
+1

इसका उपयोग करने का प्रयास किया गया, पहली बार ठीक काम करना प्रतीत होता था, लेकिन परिणामी जूते पर मुझे '** (प्रक्रिया: 774) मिलती है: गंभीर **: secret_value_get_text: दावा 'मान' विफल 'और यह मुझे मेरे जीथब पासवर्ड के लिए फिर से पूछता है ... –

+0

@ जोसेमारिया आप गिट 2.11 का उपयोग कर रहे हैं। मैंने अगले जीआईटी 2.12 के लिए libsecret के बारे में एक बग फिक्सिंग कोई प्रतिबद्धता नहीं देखी। – VonC

+0

हाँ, मैं गिट 2 का उपयोग कर रहा हूं।11 –

संबंधित मुद्दे