खुद में गिटोलाइट authorization परत है जिसे एसएसएच की आवश्यकता नहीं है।
इसे केवल पता होना चाहिए जो इसे कॉल करने के लिए अधिकृत है या उस व्यक्ति को गिट कमांड करने के लिए अधिकृत नहीं है।
SSH प्रमाणीकरण के लिए प्रयोग किया जाता है (लेकिन आप उदाहरण के लिए के रूप में अच्छी प्रमाणीकरण के लिए एक HTTP अपाचे का उपयोग कर सकते)
रास्ता gitolite ssh द्वारा कहा जाता है "Gitolite and ssh" से समझाया गया है, और ssh तंत्र का उपयोग करता है forced command:
![http://oreilly.com/catalog/sshtdg/chapter/ssh_0802.gif](https://i.stack.imgur.com/2WQvb.gif)
~/.ssh/authorized_keys
(gitolite ssh सर्वर पर) लगता है कि:
command="[path]/gitolite-shell sitaram",[more options] ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA18S2t...
command="[path]/gitolite-shell usertwo",[more options] ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArXtCT...
सबसे पहले, यह पता चलता है कि इस फ़ाइल में कौन सी सार्वजनिक कुंजी आने वाली लॉगिन से मेल खाती है। एक बार मैच मिलने के बाद, यह उस पंक्ति पर दिए गए आदेश को चलाएगा; उदाहरण के लिए, अगर मैंने लॉग इन किया है, तो यह [path]/gitolite-shell sitaram
चलाएगा।
तो ध्यान देने वाली पहली बात यह है कि ऐसे उपयोगकर्ताओं को "खोल पहुंच" नहीं मिलती है, जो कि अच्छा है!
(आदेश मजबूर = कोई इंटरैक्टिव खोल सत्र: यह केवल एक प्रतिबंधित खोल प्रदान करेगा, केवल एक स्क्रिप्ट, हमेशा एक ही क्रियान्वित) कमांड को चलाने से पहले
तथापि, sshd
SSH_ORIGINAL_COMMAND
नामक एक पर्यावरण चर सेट अप करता है जिसमें आपके वर्कस्टेशन को भेजे गए वास्तविक git
कमांड शामिल हैं।
यह वह आदेश है जो आपके पास चलाया गया होगा यदि आपके पास अधिकृत कुंजी फ़ाइल में command=
भाग नहीं है।
gitolite-shell
नियंत्रण हो जाता है है, यह निर्धारित करने के लिए कि आप कौन हैं पहला तर्क ("sitaram
" "usertwo
", आदि) पर लग रहा है। यह SSH_ORIGINAL_COMMAND
वैरिएबल को यह पता लगाने के लिए देखता है कि आप किस भंडार को एक्सेस करना चाहते हैं, और चाहे आप पढ़ रहे हों या लिख रहे हों।
अब यह है उपयोगकर्ता, भंडार, और अनुरोध (पढ़ना/लिखना), gitolite इसकी कॉन्फ़िगरेशन फ़ाइल को देखता है, और या तो अनुरोध को अनुमति देता है या अस्वीकार करता है।
तथ्य यह है कि authorized_keys
एक पर्ल स्क्रिप्ट (gitolite-shell
) कहता है क्योंकि Gitolite पर्ल में लिखा है।
यह जावास्क्रिप्ट प्रोग्राम को बहुत अच्छी तरह से कॉल कर सकता है।
किसी भी आदेश के बिना GitHub पर अपने ssh, आप अपने प्रश्न में अपने उल्लेख की तरह एक शुभकामना संदेश मिलता है, तो।
Gitolite एक समान संदेश प्रदर्शित करता है, के रूप में print_version()
function of the info
command script में विस्तृत:
:
hello admin, this is [email protected] running gitolite3 v3.0-12-ge0ed141 on git 1.7.3.4
late 2013 Gitolite documentation अब आरेख कि जो सभी टुकड़ों को सारांशित में शामिल हैं: जैसे
sub print_version {
chomp(my $hn = `hostname -s 2>/dev/null || hostname`);
my $gv = substr(`git --version`, 12);
$ENV{GL_USER} or _die "GL_USER not set";
print "hello $ENV{GL_USER}, this is " . ($ENV{USER} || "httpd") . "\@$hn running gitolite3 " . version() . " on git $gv\n";
}
संदेश लग रहा है
![ssh and Gitolite](https://i.stack.imgur.com/F7hM7.png)
गिटोलाइट खुला स्रोत है, आप सीख सकते हैं कि यह कोड/दस्तावेज़ीकरण को पढ़कर कैसे काम करता है। – tpg2114
मैंने कोड पढ़ा है और जो मैं इकट्ठा कर सकता हूं वह एक पर्ल स्क्रिप्ट है। मुझे पर्ल पता नहीं है इसलिए मैं उम्मीद कर रहा था कि कोई मुझे उपर्युक्त उत्पादन करने के लिए एक त्वरित उदाहरण प्रदान कर सके। – user1813844
http://stackoverflow.com/questions/5180981/ssh-client-for-node-js – Peter