सीमित विशेषाधिकार वाले SSH उपयोगकर्ता को केवल Git रिपॉजिटरी का उपयोग करने के लिए बनाएँ


12

मेरे पास अपने SunOS सर्वर पर एक git रिपॉजिटरी होस्ट है, जिसे मैं ssh के माध्यम से दूरस्थ रूप से उपयोग करता हूं

git clone ssh://myUser@mydomain.com/path/to/git

अब मुझे उस रिपॉजिटरी तक पहुंचने में सक्षम होने के लिए और अधिक उपयोगकर्ता जोड़ने की आवश्यकता है, लेकिन यह सुनिश्चित नहीं है कि कैसे।

मैंने ssh में एक testUser जोड़ा है , लेकिन मैं उस उपयोगकर्ता विशेषाधिकारों को केवल git का उपयोग करने के लिए सीमित नहीं कर सकता।

testUser पूरे सर्वर को देखने और ब्राउज़ करने में सक्षम है।

मैं ऐसे उपयोगकर्ता कैसे बना सकता हूँ जो केवल दूरस्थ रूप से git तक पहुँच सकते हैं, क्लोन / पुल / पुश आदि ...

धन्यवाद

जवाबों:


12

आप कई गिट-शेल उपयोगकर्ताओं (और आवश्यक समूह और समूह अनुमतियों को स्थापित करने के बजाय एकल उपयोगकर्ता के तहत जिओलाइट का उपयोग करने पर विचार कर सकते हैं ताकि वे रिपॉजिटरी तक पहुंच साझा कर सकें)।

gitolite सर्वर पर एक एकल, सामान्य उपयोगकर्ता के अंतर्गत चलता है और Git रिपॉजिटरी तक पहुंच को अलग करने के लिए SSH सार्वजनिक कुंजी का उपयोग करता है (देखें कि gitolite अपनी SSH- आधारित पहचान कैसे करता है, इसके कुछ विवरणों के लिए " gitolite ssh का उपयोग करता है " )। gitolite प्रति-रिपॉजिटरी, प्रति-शाखा और यहां तक ​​कि कुछ प्रति-पथ अभिगम नियंत्रण प्रदान करता है।


1
Gitosis के लिए +1 ... यह इस सेटअप के लिए बिल्कुल बनाया गया था।
जेरेमी बोस

12

आपके पास मूल रूप से दो विकल्प हैं।

  1. जैसा कि टॉपडॉग ने उल्लेख किया है, जब आप सर्वर पर उपयोगकर्ताओं को बनाते हैं, तो उनके शेल को गिट-शेल ( यहां पुस्तक प्रविष्टि ) पर सेट करें। यह उपयोगकर्ता को SSH के माध्यम से लॉगिन करने की अनुमति देगा, लेकिन एक सामान्य, पूर्ण रूप से चित्रित शेल (जैसे श, बैश, आदि) चलाने के बजाय, यह चलाएगा, गिट-शेल, जो केवल गिट कार्यक्षमता तक पहुंच प्रदान करता है।

  2. वैकल्पिक रूप से, आप अपने रिपॉजिटरी को दूसरे प्रोटोकॉल जैसे टीसीपी ( गिट-डेमोन का उपयोग करके ) या एचटीटीपी / एचटीटीपीएस के माध्यम से उपलब्ध करा सकते हैं । मैं केवल हालांकि केवल पढ़ने के लिए इस तरह के परिदृश्य की सिफारिश करूंगा।

आप अपने उपयोगकर्ताओं के लिए 'पुश' कार्यक्षमता का समर्थन करना चाहते हैं, इसलिए आपको विकल्प # 1 के साथ जाना चाहिए।


5

आपको उनके शेल को गिट-शेल में बदलने की आवश्यकता है, जो उन्हें केवल गिट कार्यों तक पहुंच प्रदान करेगा।


धन्यवाद टॉपडॉग। मूल रूप से उपयोगकर्ता अपने मैक पर अपने स्वयं के गिट शेल का उपयोग करेगा। मैं वास्तव में उसे सर्वर पर ssh करने में सक्षम होना नहीं चाहता। इसलिए अगर git repo testUser कंप्यूटर / Mac से mydomain.com पर है, तो टर्मिनल में वह सिर्फ क्लोन ssh: //myUser@mydomain.com/path/to/git को अपने पासवर्ड के लिए संकेत दे सकता है, फिर रेपो डाउनलोड करें। मैंने अभी-अभी उनके खोल को गिट-शेल में सेट करने की कोशिश की। यह क्लोन कॉल करते समय संकेत देता है लेकिन पासवर्ड अस्वीकार किया जा रहा है।
बाख

अगर आप चाहते हैं कि वे सभी सर्वर पर करना चाहते हैं, तो git- शेल को myUser खोल सेट करें और git कमांड चलाएं और पासवर्ड प्रॉम्प्ट के लिए कृपया कुंजियों का उपयोग न करें। मुक्त Git किताब पर एक सर्वर नज़र पर Git के अधिक विस्तृत कवरेज के लिए progit.org/book/ch4-0.html
topdog

पुस्तक संदर्भ के लिए धन्यवाद! बहुत मददगार। हालांकि यह अभी भी सेटअप के साथ समस्या है, gitolite का उपयोग कर समाप्त हुआ।
बाख

git-shell : "यह SSH खातों के लिए प्रतिबंधित गिट एक्सेस प्रदान करने के लिए एक लॉगिन शेल है। यह केवल सर्वर-साइड Git कमांड के निष्पादन की अनुमति देता है जो पुल-पुश कार्यक्षमता को कार्यान्वित करता है, साथ ही git-shell-कमांड नामक सब-कोड में मौजूद कस्टम कमांड्स। उपयोगकर्ता की होम निर्देशिका। " लिनक्स पर, "/ bin / git-shell" को "/ etc / shells" और फिर "usermod --shell / bin / git-shell $ USER" जोड़ें। Btw, git बुक अब git-scm.com/book/en/ch4-0.html पर है
डेविड टोनहोफर

0

इसे करने का एक और तरीका है, ssh के भीतर उपयोगकर्ताओं की सीमा तक पहुंच।

( http://prefetch.net/blog/index.php/2006/09/05/limiting-access-to-openssh-directives/ )

उदाहरण केवल एक उपयोगकर्ता का उपयोग करके है, लेकिन यदि उपयोगकर्ता एक ही समूह पर हैं तो आप समूह निर्देश का उपयोग करके उन्हें फ़िल्टर कर सकते हैं। कुछ इस तरह

AllowTcpForwarding yes
X11Forwarding yes

Match Group Users
         AllowTcpForwarding no
         X11Forwarding no
         $Here is a directive for git$
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.