Gitlab SSH कीज़ के साथ काम नहीं कर रहा है


11

मैं Gitlab के साथ समस्या कर रहा हूँ। मैंने Gitlab https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md को कॉन्फ़िगर और कॉन्फ़िगर करने के लिए निम्न मार्गदर्शिका का उपयोग किया । स्थापना अच्छी तरह से और सभी जाने के लिए लग रहा था। लगता है कि वेब एप्लिकेशन ठीक काम कर रहा है। हालाँकि, मैं क्लोन, पुल, पुश करने में असमर्थ हूं, मूल रूप से मैं अनिवार्य रूप से गिटलैब का उपयोग नहीं कर सकता हूं। मैंने एसएसएच पर क्लोन करने की कोशिश करते समय HTTP और अनुमति से वंचित 403 त्रुटियों को देखा है।

मैंने सुनिश्चित किया है कि मेरी निजी कुंजियाँ Windows और OS X दोनों पर सही ढंग से सेटअप हैं। मैं सर्वर पर सार्वजनिक कुंजियाँ देख सकता हूँ। मैंने ~ / .ssh.config में अपनी कॉन्फ़िग फ़ाइल में निम्नलिखित को जोड़ा

Host {hostname}
    User git
    Hostname {hostname}
    PreferredAuthentications publickey
    IdentityFile C:/Users/{username}/.ssh/id_rsa

यह वही है जो मैं / var / log / safe में देखता हूं

Jan 14 17:31:48 dev_version_control sshd[3696]: Connection closed by 192.168.17.113
Jan 14 17:32:18 dev_version_control sshd[3700]: Connection closed by 192.168.17.113

/var/log/messageभूमिका जब मैं Git या ssh उपयोग करने की कोशिश नहीं था

मुझे यकीन नहीं है कि यहाँ से कहाँ जाना है। कोई सुझाव?

मुझे नहीं पता है कि आप SSH द्वारा git उपयोगकर्तानाम का क्या मतलब है। मैंने जिस गाइड का उपयोग किया, उसने गिट उपयोगकर्ता के लिए पासवर्ड नहीं बनाया और कहा कि उपयोगकर्ता का उपयोग लॉगिन करने के लिए नहीं किया जा सकता है।


क्या आप SSH को Git सर्वर में उपयोगकर्ता 'git' के रूप में देख सकते हैं? क्या आप कनेक्शन बंद किए जाने के बारे में कुछ और आउटपुट प्राप्त करने के लिए '-vvv' पैरामीटर जोड़ने की कोशिश कर सकते हैं? यह देखने योग्य भी हो सकता है कि / var / log / सुरक्षित / और / var / log / संदेश फाइलों को देखने के लिए कि वहां कोई त्रुटि है या नहीं।
जस्सी

सार्वजनिक कुंजियाँ क्लाइंट पर सेट नहीं की जाती हैं - आपको यह सुनिश्चित करने की आवश्यकता है कि आपकी निजी कुंजी आपके क्लाइंट पर है। सार्वजनिक कुंजी सर्वर पर जाती है।
ईईएए

मेरा सवाल अपडेट किया। उम्मीद है कि मदद करता है
greyfox

जवाबों:


10

यह प्रदान करते हुए कि आपने अपनी निजी कुंजी अपने क्लाइंट पर लोड कर दी है, तो ऐसा लगता है कि यह 'git' उपयोगकर्ता होम डायरेक्टरी और .ssh डायरेक्टरी पर अनुमतियाँ जारी कर सकता है।

कृपया अपने / घर / गिट निर्देशिका को 0711 के मास्क में बदलने का प्रयास करें:

chmod 0711 /home/git

सुनिश्चित करें कि /home/git/.ssh निर्देशिका में 0700 का मास्क है:

chmod 0700 /home/git/.ssh

सुनिश्चित करें कि /home/git/.shsh/authorized_keys फ़ाइल में 0600 का मास्क है:

chmod 0600 /home/git/.ssh/authorized_keys

'Git' उपयोगकर्ता के लिए आपकी होम डायरेक्टरी जो भी हो, उसे बदलें / होम / git करें, यदि वह ट्यूटोरियल में अलग था। यदि यह अनुमति नहीं है, तो कृपया टिप्पणी करें और हम देखेंगे कि मुद्दा और क्या हो सकता है।


यह मुद्दा हो सकता है। मैं अपने मैक पर git क्लोन git @ {hostname}: {workspace} / {repository} का उपयोग करके क्लोन करने में सक्षम हूं। दुर्भाग्य से मैंने अपनी विंडोज मशीन को काम पर छोड़ दिया, इसलिए मुझे कल एक कोशिश करने की आवश्यकता होगी। क्या सार्वजनिक / निजी कुंजी प्रमाणीकरण HTTP पर Gitlab के साथ काम नहीं करता है? मैं इस धारणा के तहत था कि गितुब ने कैसे काम किया है लेकिन मैं इसके बारे में गलत हो सकता हूं।
ग्रेफॉक्स

सार्वजनिक / निजी कुंजी प्रमाणीकरण केवल SSH पर काम करता है। यदि आप HTTP का उपयोग करते हैं, तो आपको कुछ भी करने के लिए अपने उपयोगकर्ता नाम और पासवर्ड का उपयोग करना होगा। यदि आप v1.8 जैसे Git के नए संस्करण का उपयोग कर रहे हैं, तो यह आपको उपयोगकर्ता नाम और पासवर्ड के लिए संकेत देना चाहिए। Git के पुराने संस्करण ऐसा नहीं करते हैं, इसलिए आपको अपना उपयोगकर्ता नाम और रिमोट का पासवर्ड (इनलाइन https://username:password@git.server.com/repo.git)
जोड़ना होगा

आह्ह्ह जो अब बहुत ज्यादा मायने रखता है। तो क्या विंडोज ऐप के लिए GitHub क्रेडेंशियल स्टोर करता है? मदद के लिए बहुत बहुत धन्यवाद!
ग्रेफॉक्स

मैंने GitHub विंडोज एप्लिकेशन का ज्यादा इस्तेमाल नहीं किया है, लेकिन मुझे लगता है कि मेमोरी से इसे खोलने पर आपको लॉगिन की आवश्यकता होती है, इसलिए मैं कहूंगा कि आपको एक्सेस क्रेडेंशियल्स को स्टोर करने के लिए उन्हें हर समय दर्ज करने से बचाना होगा।
जस्सी

1

जांचें कि आपके पास अपनी सार्वजनिक कुंजी के लिए केवल एक रिकॉर्ड है (जिसे वेब चेहरे के माध्यम से आयात किया गया था) /home/git/.ssh/authorized_keysऔर इस कुंजी में गिटलैब का उपसर्ग और शीर्षक है। दूसरे शब्दों में, यदि आपने गिटलैब स्थापित करने से पहले मैन्युअल रूप से एक ही कुंजी जोड़ी है, तो इसे हटा दें।


आपके पास वहाँ कई कुंजियाँ हो सकती हैं और आप लॉगिन कर सकेंगे बशर्ते आपकी निजी कुंजी मेल खा सके ...
jaseeey

@ जेसन, मैंने अभी अधिक सटीक व्याख्या करने के लिए संपादन किया है
पाप

धन्यवाद, यह मेरे लिए था। मैंने एक कुंजी जोड़ने के लिए मैन्युअल रूप से Gitlab का उपयोग करने से पहले अपनी ssh कुंजी लगाई थी और डुप्लिकेट कुंजियों के कारण समस्याएँ उत्पन्न हुईं।
6 फीट डैन

1

मैं यह भी जाँचने की सलाह दूंगा कि उपयोगकर्ता के पास गिटलैब में क्लोन / पुश / पुश करने की उचित अनुमति है। मैं अभी भी ssh / https विन्यास के माध्यम से देखने में बहुत समय बिताता हूं, जब समस्या का कारण gitlab में उपयोगकर्ता पर्याप्त संभावना नहीं था ...


1

अपनी स्थिति में मैंने FreeBSD संकुल के माध्यम से gitlab स्थापित किया। Gitlab SSH काम नहीं किया। इसका कारण गिट के लिए एक गलत घर निर्देशिका थी: (vipw)

git:*:211:211::0:0:gitosis user:/usr/local/git:/bin/sh

मैंने इसे बदल दिया:

git:*:211:211::0:0:gitosis user:/home/git:/bin/sh

1

यह तब हो सकता है जब मेजबान के नाम में '-' हो। (हालांकि यह RFC 952 के अनुसार कानूनी है ।)

ssh मुझे किसी भी होस्ट के लिए पासवर्ड देता है जो उसके नाम में '-' होता है। यह विशुद्ध रूप से ssh कॉन्फ़िगरेशन फ़ाइल पार्सिंग के साथ एक समस्या प्रतीत होगी क्योंकि ~ / .ssh / config (और मेरे git दूरस्थ यूआरएल में उस उपनाम का उपयोग करके) ने समस्या को हल कर दिया।

दूसरे शब्दों में, अपने C: / उपयोगकर्ता / {उपयोगकर्ता नाम} / ssh / config में निम्नलिखित कुछ डालने का प्रयास करें

Host {a}
    User git
    Hostname {a-b.domain}
    IdentityFile C:/Users/{username}/.ssh/id_rsa

और जहां आपके पास फ़ॉर्म का रिमोट है

origin  git@a-b.domain:repo-name.git

इसे निकालें और फिर फ़ॉर्म का उपयोग करके इसे फिर से जोड़ें

origin  git@a:repo-name.git

1

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

$ ssh-add <(echo "$SSH_PRIVATE_KEY")
Enter passphrase for /dev/fd/63: ERROR: Job failed: exit code 1

फिर base64 SSH_PRIVATE_KEY चर को एनकोड करता है। यदि आप OS X पर हैं,

cat ~/.ssh/ssh_key_for_project | base64 | pbcopy

इसे सांकेतिक शब्दों में बदलना और अपने क्लिपबोर्ड पर कॉपी करना होगा। अब फिर .itlab-ci.yml स्क्रिप्ट लाइन को बदल दें

- ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d)


0

मेरी समस्या यह थी कि निजी कुंजी फ़ाइल id_rsa बनाई गई थी और जिसे पोटीन द्वारा बचाया गया था, एक ubuntu मशीन से बनाई गई की तुलना में एक अलग प्रारूप है। बाद में मैंने ubuntu मशीन से एक जोड़ी कुंजियाँ बनाईं, इन फ़ाइलों को% UserProfile% .ssh फ़ोल्डर के अंतर्गत Windows मशीन पर वापस कॉपी करें, फिर नई जनित सार्वजनिक कुंजी को Gitlab में जोड़ें। मेरे लिए कोई और अनुमति अस्वीकृत

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