2009-05-25 22 views
20

मैं जब मेरे ArchlinuxGitosis पासवर्ड भले ही सार्वजनिक कुंजी

पर

http://wiki.archlinux.org/index.php/Setting_Up_Git_ACL_Using_gitosis

मैं इस विकी लेख और सफलतापूर्वक स्थापित gitosis करने के लिए भेजा gitosis कॉन्फ़िगर करने का प्रयास कुछ समस्याओं के साथ सामना कर रहा हूँ दिया जाता है की आवश्यकता है।

$ sudo pacman यू gitosis-Git-20,090,525-1-i686.pkg.tar.gz
$ sudo एच -u gitosis gitosis-init < /tmp/id_rsa.pub

और मेरे स्थानीय उपयोगकर्ता के id_rsa.pub को शामिल करने के लिए संशोधित /srv/gitosis/.ssh/authorized_keys।

लेकिन जब मैं git clone स्थानीय उपयोगकर्ता के रूप में,

$ Git क्लोन gitosis @ मेजबान चलाएँ: gitosis-admin.git

इसे कहते हैं

प्रारंभ खाली Git भंडार /home/wyx/gitosis-admin/.git/
[email protected] का पासवर्ड: *****
घातक: दूरस्थ अंत काट दिया अप्रत्याशित रूप से

तो Git क्लोन कार्रवाई विफल रही: 'gitosis-admin.git' एक Git भंडार
घातक हो प्रतीत नहीं होता है। मैं सोच रहा हूं कि यह मेरे स्थानीय उपयोगकर्ता की निर्देशिका (/ home/wyx) में एक खाली गिट भंडार शुरू करने का प्रयास क्यों करता है? और चूंकि मैंने पहले ही स्थानीय उपयोगकर्ता के id_rsa.pub को .ssh/अधिकृत_keys में जोड़ा है, फिर भी यह पासवर्ड क्यों मांगता है?

+0

या शायद अपने कंसोल को पुनः प्रारंभ करें – Reda

उत्तर

20

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

क्लोन विफल क्यों हुआ, ऐसा लगता है कि आप रिमोट रिपोजिटरी पथ के लिए गलत वाक्यविन्यास का उपयोग कर रहे हैं; git clone एसपीपी वाक्यविन्यास का उपयोग नहीं करता है। वास्तव में, यदि आप क्लोन प्रोटोकॉल निर्दिष्ट नहीं करते हैं, तो मेरा मानना ​​है कि यह एसएसएच के बजाए गिट प्रोटोकॉल मानता है, शायद यही कारण है कि उसने आपको पासवर्ड के लिए कहा था। ऐसा करें:

 
$ git clone ssh://[email protected]/~/gitosis-admin.git 
+0

आपके उत्तर के लिए धन्यवाद। अंत में मुझे समस्या है कि मैं गलत सार्वजनिक आरएसए कुंजी का उपयोग करता हूं, और ssh: // वाक्यविन्यास एक और गलती है। – ZelluX

+6

गिट 1.6+ के रूप में, आपको प्रोटोकॉल निर्दिष्ट करने की आवश्यकता नहीं है। तो उपयोगकर्ता @ होस्ट: reponame.git काम करेगा। – Shoan

4

Gitosis अपने आप authorized_keys फ़ाइल बनाता है। यदि आपके पास पहले से ही वह फ़ाइल है, तो इसे हटाएं और इसे फिर से बनाने के लिए गिटोसिस-इनिट को अनुमति दें। एक बार ऐसा करने के बाद, फ़ाइल के साथ गड़बड़ मत करो।

+1

यह समस्या थी जिसमें मैंने भाग लिया था। मैंने पहले से ही id_rsa.pub को ~ gitosis/.ssh/valid_keys में कॉपी कर लिया था। गिटोसिस-इनिट लिखने के लिए इसे दूर करने के लिए जो कुछ भी चाहता था उसे लिखने के लिए (मौजूदा व्यक्ति में शामिल होने के बजाय) ने मुझे इस मुद्दे को हल किया। – uckelman

8

मुझे भी एक ही समस्या का सामना करना पड़ा "घातक: '/gitosis-admin.git' एक वैध भंडार प्रतीत नहीं होता है।" मैंने समस्या के लिए बहुत कुछ खोजा और अंत में समाधान मिला।

दरअसल, गिटोसिस उपयोगकर्ता का डिफ़ॉल्ट पता "/ srv/gitosis" है: मेरे सेटअप के मामले में उबंटू सर्वर 10.04 है।

और जब हम "गिट क्लोन [email protected]: gitosis-admin.git" लिखते हैं, तो यह/srv/gitosis में gitosis-admin.git रिपोजिटरी की खोज करता है।तो जब मैंने/एसआरवी/गिटोसिस के अंदर प्रवेश किया, तो मुझे पता चला कि इसके अंदर एक और भंडार है जो भंडार के रूप में नामित है जिसमें गिटोसिस-admin.git भंडार शामिल है।

तो वास्तव में डिफ़ॉल्ट रूप से gitosis-admin.git डिफ़ॉल्ट स्थान पर नहीं था। इसलिए मुझे कमांड पथ को संशोधित करना है और फिर यह ठीक काम करता है।

मुझे अपनी स्थानीय मशीन पर भंडार क्लोन मिला। मैंने कमांड का उपयोग इस प्रकार किया:

"गिट क्लोन [email protected]: रिपॉजिटरीज/गिटोसिस-admin.git" और यह मेरे लिए ठीक काम करता है।

अपने मामले में गिटोसिस-व्यवस्थापक निर्देशिका के लिए देखें और मुझे आशा है कि आप अपनी समस्या का समाधान करने में सक्षम होंगे।

+0

मेरे मामले में मुझे "गिट क्लोन [email protected]: /srv/gitosis/repositories/gitosis-admin.git" में बदलना होगा। लेकिन यह सही तरीका नहीं हो सकता है। अभी भी टूटा। –

0

मैं अंत में इस

git clone ssh://[email protected]:1337/home/git/repositories/gitosis-admin.git 

की तरह काम कर रहा है, जहां 1337 बंदरगाह ssh उपयोग कर रहा है यह मिल गया।

git clone [email protected]:/srv/gitosis/repositories/gitosis-admin.git 
6

यह वही है मुझे (Ubuntu पर) के लिए समस्या हल है सामान्य रूप से।

मुझे एक बार प्राधिकरण की समस्या थी, तो गिटोसिस सर्वर ने मुझे पासवर्ड पूछना जारी रखा, भले ही मैं अपनी सार्वजनिक कुंजी पहले रखूं। मुझे एहसास हुआ कि गिटोसिस ने मुझे चेतावनी दी है "चेतावनी: gitosis.ssh: keyfile में असुरक्षित एसएसएच उपयोगकर्ता नाम: '[email protected]'" जब मैंने गिटोसिस में अपने परिवर्तन करने और धक्का देने की कोशिश की है।

कुंजीफाइल और कीफाइल नाम में उपयोगकर्ता @ होस्ट भाग को बदलकर मेरी समस्या हल हो गई। किसी भी तरह gitosis पिछले एक पसंद नहीं था।

1

संपादन authorized_keys के साथ काम किया ही ubuntu पर

समस्या, आवश्यक नहीं होना चाहिए था:

0

वही समस्या, और मेरे मामले में यह था कि मैंने .ssh/में गलत अधिकृत_की हैं। मैंने इसे किसी बिंदु पर गड़बड़ कर दिया होगा ...

0

एक नई उबंटू मशीन में स्थानांतरित होने और इस सवाल में खुद को चलाने के बाद, मैंने यहां कुछ जवाब देखा जो मुझे सही दिशा में आगे बढ़ने लगे, अर्थात् पूर्णता का उपयोग करना के लिए पथ। प्रत्येक भंडार के लिए फ़ाइलें।

प्रयोग एक सा मैं Git उपयोगकर्ता के घर निर्देशिका करने के लिए संबंधित पथ देखा भी काम किया है, जो कुछ छोटा तरह:

[email protected]:repositories/project.git 

करने के लिए नीचे

[email protected]:/var/git/repositories/project.git 

बजाना थोड़ा अधिक मैं परियोजना चलती की कोशिश की भंडार से फ़ाइलों को सीधे गिट की होम निर्देशिका में; अब केवल परियोजना की जरूरत है:

[email protected]:project.git 

यह एक सा hacky है, लेकिन मुझे शक है किसी भी नुकसान का कारण होगा। यह जानना अच्छा होगा कि क्या बदल गया, क्योंकि मैं एक और उबंटू (पुराने) पर गिटोसिस होस्ट कर रहा था और उपरोक्त से अंतिम नोटेशन के साथ रिपोजिटरी निर्देशिका के अंदर परियोजनाओं को प्राप्त करने में सक्षम था।

1

मैंने एक समान समस्या का समाधान किया।हो सकता है कि यह आपके मामले में क्या हो रहा है लेकिन आप उसी समस्या निवारण को फिर से लागू करने का प्रयास कर सकते हैं जो मैंने किया था।

मुझे एहसास हुआ कि जब मैं एक नए उपयोगकर्ता के लिए चाबियाँ दबा रहा था तो मुझे यह स्टैकट्रैक मिल रहा था, यह लक्षण है कि गिटोसिस पर हुक नई कुंजी को संसाधित करने में असफल रहा।

remote: Traceback (most recent call last): 
remote: File "/usr/local/bin/gitosis-run-hook", line 9, in <module> 
remote:  load_entry_point('gitosis==0.2', 'console_scripts', 'gitosis-run-hook')() 
remote: File "/usr/local/lib/python2.7/dist-packages/gitosis-0.2-py2.7.egg/gitosis/app.py", line 24, in run 
remote:  return app.main() 
remote: File "/usr/local/lib/python2.7/dist-packages/gitosis-0.2-py2.7.egg/gitosis/app.py", line 38, in main 
remote:  self.handle_args(parser, cfg, options, args) 
remote: File "/usr/local/lib/python2.7/dist-packages/gitosis-0.2-py2.7.egg/gitosis/run_hook.py", line 81, in handle_args 
remote:  post_update(cfg, git_dir) 
remote: File "/usr/local/lib/python2.7/dist-packages/gitosis-0.2-py2.7.egg/gitosis/run_hook.py", line 45, in post_update 
remote:  config=cfg, 
remote: File "/usr/local/lib/python2.7/dist-packages/gitosis-0.2-py2.7.egg/gitosis/gitdaemon.py", line 95, in set_export_ok 
remote:  for (dirpath, repo, name) in walk_repos(config): 
remote: File "/usr/local/lib/python2.7/dist-packages/gitosis-0.2-py2.7.egg/gitosis/gitdaemon.py", line 72, in walk_repos 
remote:  assert ext == '.git' 
remote: AssertionError 

त्रुटि केवल एक बार दिखाया जा रहा था, तो मैं भोलेपन से एक क्षणिक विफलता के रूप में यह खारिज कर दिया।

प्रैक्टिस में, गिटोसिस केवल मेरी कुंजी के लिए काम कर रहा था, लेकिन यह उन उपयोगकर्ताओं के लिए काम नहीं कर रहा था जिन्हें मैं समर्थन देने की कोशिश कर रहा था। ~/.ssh/authorized_keys में मुझे उस उपयोगकर्ता की सार्वजनिक कुंजी नहीं मिली जो मैंने सोचा था कि मैंने अभी जोड़ा था। यही कारण है कि हर बार जब उसने क्लोनिंग करने का प्रयास किया तो मेरे दोस्त को पासवर्ड के लिए कहा जा रहा था।

मैं gitosis.conf

[gitosis] 
loglevel=DEBUG 

मैं gitosis.conf फ़ाइल ताकि हुक फिर से ट्रिगर हो जाएगा करने के लिए जोड़ने और उपयोगकर्ताओं को निकालने रखना था करने के लिए Gitosis विन्यास को डिबगिंग कहा, इन दो पंक्तियों को जोड़ने के द्वारा। मेरा डीबग लॉग

remote: DEBUG:gitosis.gitdaemon:Deny 'syncShare' 
remote: DEBUG:gitosis.gitdaemon:Walking 'legacy.d', seeing ['buildtools', 'QA_Dashboard'] 
remote: DEBUG:gitosis.gitdaemon:Walking 'legacy.d/buildtools', seeing ['.git', 'conf', 'scripts'] 
remote: Traceback (most recent call last): 
etc ... 

ए-हा! चूंकि हुक ने भंडार के माध्यम से "चलना" किया था, इसे .git निर्देशिका legacy.d/buildtools के तहत मिली थी और यह वही है जहां assert ext == '.git' हुआ था।

मैंने कुछ अन्य भंडारों से एक साधारण क्लोन स्टोर करने के लिए सर्वर का उपयोग किया था। नोटिस, एक सादा क्लोन, दर्पण या नंगे भंडार नहीं। प्रत्येक क्लोन की तरह इसमें .git निर्देशिका शामिल है।

गिटोसिस में हुक नहीं जानता कि एक .git निर्देशिका के साथ क्या करना है। ऐसा लगता है कि यह एक खाली नाम और aborts में एक भंडार है। एक बार जब मैंने उस क्लोन को मिटा दिया तो सबकुछ अच्छी तरह से काम करना शुरू कर दिया।

0

प्रमाणन मुद्दों में अधिक जानकारी प्राप्त करने के लिए, वर्बोज़ डिबग लॉग विवरण इकट्ठा: एक

ssh -vvv [email protected]_host

प्रत्यक्ष मैनुअल-कनेक्ट चाल (का उपयोग करते हुए जो, phrased द्वारा सबसे महत्वपूर्ण बात/आम तौर पर, वास्तव में सबसे सटीक का उपयोग करता है/प्रत्यक्ष संदर्भ संदर्भ; इस मामले में: उपकरण-दूर की बजाय वास्तविक एसएसएच तंत्र - और इस प्रकार आवश्यकता से कम सटीक - गिट हैंडलिंग!)।

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