गिटलैब पर अनुमति से वंचित (सार्वजनिक कुंजी)


134

मेरी समस्या यह है कि मैं GitLab से पुश या फ़ोकस नहीं कर सकता। हालांकि, मैं क्लोन कर सकता हूं (HTTP के माध्यम से या एसएसएच के माध्यम से)। जब मैं पुश करने का प्रयास करता हूं तो मुझे यह त्रुटि मिलती है:

अनुमति से इनकार (publickey) घातक: दूरस्थ रिपॉजिटरी से पढ़ नहीं सका

मैंने जिन थ्रेड्स को देखा है, उनमें से मैंने यहाँ क्या किया है:

  • मेरे कंप्यूटर पर SSH कुंजी सेट करें और GitLab में सार्वजनिक कुंजी जोड़े
  • उपयोगकर्ता नाम और ईमेल के लिए कॉन्फिग को पूरा किया
  • SSH के माध्यम से और HTTP के माध्यम से यह जांचने के लिए क्लोन किया जाता है कि क्या यह समस्या को हल करेगा
  • Ssh -T git@gitlab.com कमांड को पूरा किया

यदि आपके पास मेरे मुद्दे को हल करने के बारे में कोई अंतर्दृष्टि है, तो यह बहुत सराहना की जाएगी।


5
चलाने ssh -vvvv git@gitlab.comअगर यह SSH कुंजी ऊपर उठाता है देखने के लिए
निल्स वर्नर

1
क्या आपने gitlab.com/profile/keys के माध्यम से SSH कुंजी जोड़ी है ?
अकरम ने

@ निल्स वर्नर: जब मैं यह कमांड करता हूं तो मुझे बहुत सारी लाइनें मिलती हैं, लेकिन उनमें से एक है "ऑथेंटिफिकेशन सक्सेसफुल (पबलीके)"
एलेक्जेंड्रे फर्नांडिस बार्टोलोमू

4
सुनिश्चित करें कि आप भाग नहीं रहे हैं sudo git clone git@gitlab.com:project/somethiing.git, अन्यथा /root/.sshआपके द्वारा अपलोड की गई कुंजी के बजाय ssh दिखेगा~/.ssh/id_rsa
rivanov

1
मैंने "ssh-add ~ / .ssh / the_key" के माध्यम से एजेंट की कुंजी जोड़कर उसी समस्या को हल किया, जिसके बाद उन्होंने वाक्यांश द्वारा कुंजी को अधिकृत किया। यह मैंने GitLab में जो जोड़ा है, उसका निजी हिस्सा है।
सेल्टर

जवाबों:


259

बहुत खोजने के बाद मुझे यह मिला। यह मेरे लिए पूरी तरह से ठीक काम करेगा।

  1. Cmd की तरह ही "Git Bash" पर जाएं। राइट क्लिक करें और "प्रशासक के रूप में चलाएं"।
  2. प्रकार ssh-keygen
  3. एंटर दबाए।
  4. यह आपको विशिष्ट निर्देशिका की कुंजी सहेजने के लिए कहेगा।
  5. एंटर दबाए। यह आपको पासवर्ड टाइप करने या पासवर्ड के बिना दर्ज करने के लिए संकेत देगा।
  6. सार्वजनिक कुंजी विशिष्ट निर्देशिका के लिए बनाई जाएगी।
  7. अब डायरेक्टरी में जाएं और .sshफोल्डर ओपन करें ।
  8. आपको एक फ़ाइल दिखाई देगी id_rsa.pub। इसे नोटपैड पर खोलें। इससे सभी टेक्स्ट कॉपी करें।
  9. Https://gitlab.com/profile/keys पर जाएं
  10. यहां "कुंजी" टेक्स्टफील्ड में पेस्ट करें।
  11. अब नीचे "शीर्षक" पर क्लिक करें। यह अपने आप भर जाएगा।
  12. फिर "कुंजी जोड़ें" पर क्लिक करें।

अब इसे एक शॉट दें और यह सुनिश्चित करने के लिए काम करेगा।


2
मामले में आप पब फ़ाइल को क्लिपबोर्ड में कॉपी करने में खो जाते हैं। निम्नलिखित प्रयास करें:type %userprofile%\.ssh\id_rsa.pub | clip
jquijano

5
विंडोज़ 10 में अगर आपको खोजने की जरूरत है। ssh \ id_rsa.pub आप इस बिल्ली को टाइप कर सकते हैं ~ .ssh / id_rsa.pub git bash पर यह आपको "की" दिखाएगा, इसलिए आप इसे कॉपी करके टेक्स्ट फ़ील्ड में पेस्ट कर सकते हैं। in gitlab.com/profile/keys
चूटीपोंग रूबोकलोम

11
ऐसा करने के लिए सुनिश्चित करें: ssh-add filename(उपरोक्त पथ यदि rsa dir में नहीं है) उपरोक्त चरणों का पालन करने के बाद
ब्लास्कांक

3
एक जादू की तरह काम किया। धन्यवाद।
brduca

3
मैंने ऐसा किया, समस्या तय नहीं है, अनुमति से इनकार किया जा रहा है
बिलल बेगेरजाद

62

चरण 1: फ़ाइल में एक कॉन्फिग फ़ाइल जोड़ा गया ~/.ssh/configजो दिखता है

   User git
   Hostname gitlab.com
   IdentityFile ~/.ssh/id_rsa_gitlab
   TCPKeepAlive yes
   IdentitiesOnly yes

चरण 2: बस sudo के बिना git रेपो को क्लोन करें।
प्रलेखन: https://gitlab.com/help/ssh/README#working-with-non-default-ssh-key-pair-paths


1
यह आवश्यक है अगर डिफ़ॉल्ट नाम के साथ की-फाइल पहले से ही विभिन्न उद्देश्यों के लिए उपयोग की जाती है। यदि आप गैर-डिफ़ॉल्ट नाम के साथ एक की-फाइल बना रहे हैं, जैसे id_rsa_gitlabफेडो के उदाहरण में, आपको एक कॉन्फिग-फाइल की आपूर्ति करनी होगी। इस मामले के बारे में Gitlab का अच्छा लेख: gitlab.com/help/ssh/…
Dany

इसने मेरे लिए काम किया। मेरे पास Github और Gitlab दोनों कुंजियाँ थीं, ताकि आप इस समाधान के लिए।
एम। कुश

मुझे इस कार्य Hostnameको Hostकरने के लिए बदलना होगा
सदे '

27

मुझे लगता है कि सरल समाधान प्रमाणीकरण एजेंट (यदि आपकी कुंजी नहीं है ~/.ssh/id_rsa) में निजी कुंजी जोड़ना है ,

ssh-add ~/.ssh/<your private key>

आप मूल रूप से ssh-agentइसकी देखभाल करने देते हैं।

इसके अतिरिक्त, आप इसे स्थायी रूप से जोड़ सकते हैं


यह एक्सटेंशन .pub के साथ फाइल है
फेलिप

7
निजी कुंजी .pubएक्सटेंशन के बिना फ़ाइल है ।
हुसैन

15

मेरे मामले में यह डब्ल्यूएसएल (लिनक्स के लिए विंडोज सबसिस्टम) में काम नहीं किया।

जब मैं डब्ल्यूएसएल शुरू करता हूं, तो मुझे करना चाहिए

  • शुरू ssh-Agent_ eval $(ssh-agent -s)
  • ssh- एजेंट के लिए कुंजी जोड़ें: ssh-add ~/.ssh/id_rsa
  • यदि संकेत दिया जाए, तो पासवर्ड दर्ज करें

अब कनेक्शन काम करता है।
हम इसके साथ परीक्षण कर सकते हैंssh -T git@github.com

टिप्पणियाँ:


11

सुनिश्चित करें कि आप नहीं चल रहे हैं sudo git clone git@gitlab.com:project/somethiing.git, अन्यथा /root/.sshआपके द्वारा अपलोड की गई कुंजी के बजाय ssh दिखेगा~/.ssh/id_rsa


10

इसका एक बहुत ही सरल उपाय है: ssh के साथ काम करने के बजाय - https पर जाएं। ऐसा करने के लिए: अपने प्रोजेक्ट फ़ोल्डर में आपके पास एक .गित फ़ोल्डर है - आपके पास एक कॉन्फ़िग फ़ाइल है - इसे टेक्स्ट एडिटर में खोलें और लाइन बदलें

url =git@gitlab.com: yourname / yourproject.git

सेवा

url = https://gitlab.com/yourname/yourproject.git


धन्यवाद। मेरे लिए काम किया।
ktv6

7

यदि आप Linux या macox में हैं, तो टर्मिनल में बस यह कोशिश करें:

ssh-add -l

यदि यह कुछ भी नहीं लौटाता है, तो यह कोशिश करें:

ssh-add

इसे ~ / .ssh / id_rsa में पहचान बनानी होगी

पुनः प्रयास के बाद:

ssh-add -l

यह आपकी पहचान लौटाता है, इसलिए पुन: क्लोन करने के बाद, यह काम करना चाहिए

NB: अपने प्रोफ़ाइल gitlab में अपनी ssh कुंजी जोड़ना न भूलें

धन्यवाद


5

मेरे मामले में, यह एक gitlab समस्या नहीं थी, लेकिन एक sshd विन्यास एक। Ssh सर्वर ने उपयोगकर्ताओं की सूची को छोड़कर कनेक्शन की अनुमति नहीं दी। उपयोगकर्ता गिट, जो दूरस्थ रूप से गिटलैब को जोड़ता है, उस सूची में नहीं था। इसलिए, इसे किसी और चीज़ से पहले जांचें।

आप अपने ssh सर्वर कॉन्फ़िगरेशन की जाँच कर सकते हैं /etc/ssh/sshd_config। यदि आपके पास विकल्प के साथ एक पंक्ति है AllowUsers, तो उसमें git जोड़ें:

AllowUsers user1 user2 user3 git

3

मेरे पास डॉकटर के साथ चल रहा है, मैंने अपनी समस्या को ठीक करने के लिए ऐसा किया है।

पाया गया कि docker / var / log / gitlab / sshd / current में एक संदेश की कई घटनाएं थीं:

प्रमाणीकरण ने इनकार कर दिया: फ़ाइल के लिए बुरा स्वामित्व या मोड /var/opt/gitlab/.ssh/authorized_keys

जिसके बाद मैंने 99 से उस फ़ाइल का स्वामित्व बदल दिया : उपयोगकर्ताओं को git: के साथ उपयोगकर्ता :

chown git: users अधिकृत_keys


1
बहुत बहुत धन्यवाद। मैं कुबेरनेट्स पर Gitlab चला रहा हूं और / gitlab-data निर्देशिका (जो अधिकृत_की के लिए माउंटपॉइंट भी है) की अनुमति समस्याएं थीं। एक साधारण सा चोगा काफी था।
डिलन मेजबूम

3

किए जाने वाले कदम, एक ही त्रुटि मिली, लेकिन मैंने इसे ठीक किया। Gitlab ssh-rsa चाहता है ताकि नीचे rsa के लिए ssh चलाने के लिए कोड हो

  1. ssh-keygen -o -t rsa -b 4096 -C "name@gmail.com"

name@gmail.com आपका gitlab खाता ईमेल है

  1. यह आपको दर्ज करने के लिए संकेत देगा ताकि नीचे दिए गए कोड के तुरंत बाद Enter दर्ज करें,

    वह फ़ाइल दर्ज करें जिसमें कुंजी (/home/yourDesktopName/.ssh/id_rsa) सहेजें:

  2. यह आपको फिर से दर्ज करने के लिए संकेत देगा ताकि नीचे दिए गए कोड के तुरंत बाद दर्ज करें,

    पासफ़्रेज़ दर्ज करें (बिना पासफ़्रेज़ के खाली):

  3. यह आपको फिर से दर्ज करने के लिए फिर से संकेत देगा ताकि बस नीचे दिए गए कोड के तुरंत बाद दर्ज करें,

    फिर से वही पासफ़्रेज़ दर्ज करें:

  4. आप अपने ssh-rsa जेनरेट को दिखाएंगे।

  5. अपने Gitlab खाते में लॉगिन करें और दाईं ओर दिए गए नावबार पर जाएं, जहां आपको सेटिंग मिलेगी और बाएं साइडबार में आपको ssh कुंजी मिलेगी। उसमें दर्ज करें।

  6. आपको प्रवेश करने के लिए कहे जाने के तुरंत बाद, आप ssh-rsa का मार्ग प्राप्त करेंगे।

  7. अपने SSH फ़ोल्डर में जाएं और id_rsa.pub प्राप्त करें

  8. इसे खोलें और कुंजी और कॉपी पेस्ट को Gitlab में प्राप्त करें और आप लगभग पूरा कर चुके हैं।

  9. जॉचो: ssh -T git@gitlab.com

  10. तुम्हे मिल जाएगा: Welcome to GitLab, @joy4!

  11. किया हुआ।


धन्यवाद। यह विंडोज़ 10 पर काम करता है। मैंने ed25519 की कोशिश की क्योंकि गिटलैब ने निर्देश दिया था लेकिन काम नहीं कर रहा था।
दीका

यह उत्तर बहुत अच्छा है - सुनिश्चित नहीं है कि इसकी उच्च वोटिंग क्यों नहीं हुई।
mgibson

3

पहले यह मेरे लिए बहुत मुश्किल था लेकिन जब मैंने कोशिश की तो मैक और लिनक्स में ssh कुंजी जोड़ना इतना आसान हो गया। इस प्रकार करने के लिए कुछ कदम और आदेश हैं:

  1. अपने सिस्टम का एक टर्मिनल खोलें और कमांड द्वारा अपनी परियोजना निर्देशिका के अंदर जाएँ:
cd 'project directory name'
  1. चलाने के आदेश ssh-keygenउस टर्मिनल में और कुंजी की रैंडम छवि दिखाई देने तक इसे दर्ज करें।

  2. फिर उस टर्मिनल में एक और कमांड डालें:

cat ~/.ssh/id_rsa.pub

यह आपकी ssh कुंजी उत्पन्न करेगा। कुंजी के साथ शुरू ssh-rsaऔर अंत होगा .local

  1. कुंजी को कॉपी करें और फिर अपने Gitlab प्रोफ़ाइल अनुभाग पर जाएं ssh keyऔर इसे वहां पेस्ट करें। Addयह काम करेगा बटन पर क्लिक करें ।

यह मेरे लिए काम किया! धन्यवाद
Shamseer अहम्मेद

2

मेरे पास एक ही मुद्दा था, मैंने इसे एक नया ssh कुंजी जोड़कर हल किया:

  1. ssh-keygen -t ed25519 -C "email@example.com"
  2. अपने सार्वजनिक SSH कुंजी को क्लिपबोर्ड पर कॉपी करें ( xclip -sel clip < ~/.ssh/id_ed25519.pubलिनक्स पर मेरे मामले में)
  3. गिटलैब पर, settings=>sshकुंजियों पर जाएं और नई कुंजी को चिपकाएं

2

जब आपके पास कई गिट खाता है और आप अलग ssh कुंजी चाहते हैं

Ssh कुंजी जनरेट करने के लिए आपको एक ही चरण का पालन करना होगा, लेकिन सुनिश्चित करें कि आप

ssh-keygen -t ed25519 -C "your-email-id@gmail.com" 

वह पथ दर्ज करें जिसे आप सहेजना चाहते हैं (उदा: my-pc / Desktop / .ssh / ed25519)

अपने gitlab में सार्वजनिक कुंजी जोड़ें (gitlab में ssh कुंजी कैसे जोड़ें )

नीचे दिए गए कॉमन का उपयोग करके आपको नई ssh पहचान देनी होगी

ssh-add ~/my-pc/Desktop/.ssh/ed25519

2

मुख्य रूप से दो बातें

  1. आपके पास .ssh फ़ोल्डर में id_rsa.pub और id_rsa (निजी) कुंजियाँ होनी चाहिए (जो कि आपके होम फ़ोल्डर में होनी चाहिए। यदि यह आपकी कुंजियाँ नहीं है तो इसे बनाएँ)। यह काम नहीं करेगा यदि आपने अपनी प्रमुख फ़ाइलों को अलग नाम दिया है

  2. Id_rsa की अनुमति को chmod 400 ~ / .ssh / id_rsa के रूप में बदलें


2

एक अन्य समस्या जो इस व्यवहार का कारण बन सकती है, जब आपके पास 2 संभव% HOME% -locations के साथ सेटअप हो।

मैं एक पीसी का उपयोग कर रहा हूं जहां मेरे कुछ दस्तावेज़ स्थानीय रूप से संग्रहीत हैं, और उनमें से कुछ नेटवर्क ड्राइव पर संग्रहीत हैं। कुछ एप्लिकेशन सोचते हैं C:\Users\<MyUserName>\कि मेरा है %home%, दूसरों को लगता है कि U:\घर है।

बाहर मुड़ता है ssh-keygenमेरी निजी कुंजी के तहत C:\users\<MyUserName>\, और वह ssh -Tऔरssh -v भी वहाँ है।

तो सब कुछ ठीक काम करने लगता है, सिवाय इसके कि git clone, git pushऔर अन्य एक कुंजी की तलाश करें U:\। जो विफल हो जाता है, इसलिए मुझे उपरोक्त त्रुटि मिलती है।

मुझे यह पता लगाने में एक घंटा लग गया, लेकिन अंत में समाधान सरल था: मैंने सब कुछ से कॉपी C:\Users\<MyUserName>\.sshकियाU:\.ssh


1

मैंने इस तरह हल किया ।।

इस कमांड का उपयोग करके विंडोज के लिए एक कुंजी तैयार की:

ssh-keygen -t rsa -C "your.email@example.com" -b 4096

लेकिन समस्या यह थी कि इस कमांड को चलाने के बाद, यह एक लाइन पॉप करता है: "फ़ाइल दर्ज करें जिसमें कुंजी (/c/Users/xxx/.ssh/id_rsa) को बचाने के लिए:" यहां, मैं केवल फ़ाइल नाम दे रहा था जिसके कारण मेरी कुंजी मेरे pwd में दी जा रही है और दिए गए स्थान पर नहीं। जब मैंने "git क्लोन" किया, तो यह "/c/Users/xxx/.ssh/id_rsa" स्थान पर होना महत्वपूर्ण था, लेकिन यह नहीं मिला, इसलिए यह त्रुटि फेंक रहा था।

मुख्य पीढ़ी के समय 2 फाइलें "file1" और "file1.pub" उत्पन्न की गईं। मैंने इन दोनों फ़ाइलों का नाम बदल दिया है

file1 -> id_rsa 

तथा

file1.pub -> id_rsa.pub

और दोनों को स्थान में रखा "/c/Users/xxx/.ssh/"


1

टर्मिनल पर जाएं और ssh कुंजी को फिर से बनाएँ। टाइप करें ssh-keygen। यह आपसे पूछेगा कि आप इसे कहाँ सहेजना चाहते हैं, पथ टाइप करें।

फिर सार्वजनिक कुंजी को gitlabs प्लेटफ़ॉर्म पर कॉपी करें। यह आमतौर पर ssh-rsa से शुरू होता है।


1

मेरे लिए समस्या थी, कि मैं बंद UsePAMसे yesकरने के लिए noके तहत SSH विन्यास फाइल में /etc/ssh/sshd_configUsePAM yesसब कुछ के साथ पूरी तरह से काम करता है।


1

मुझे गीतालाब मदद में समाधान मिला ।

To create a new SSH key pair: 
 1. Open a terminal on Linux or macOS, or Git Bash / WSL on Windows.
 2. Generate a new ED25519 SSH key pair: ssh-keygen -t ed25519 -C "email@example.com"
 2.1 Or, if you want to use RSA: ssh-keygen -o -t rsa -b 4096 -C "email@example.com"
 3. Next, you will be prompted to input a file path to save your SSH key pair to... use the suggested path by pressing Enter
 4. Once the path is decided, you will be prompted to input a password to secure your new SSH key pair. It's a best practice to use a password, but it's not required and you can skip creating it by pressing Enter twice.
 5. Copy your public SSH key to the clipboard by using one of the commands below depending on your Operating System:
        macOS:        pbcopy < ~/.ssh/id_ed25519.pub
        WSL / GNU/Linux (requires the xclip package):      xclip -sel clip < ~/.ssh/id_ed25519.pub
        Git Bash on Windows:      cat ~/.ssh/id_ed25519.pub | clip
 6. Navigating to SSH Keys and pasting your public key in the Key field
 7. Click the Add key button

मुझे आशा है कि यह आपकी कुछ मदद कर सकता है!


1

Ubuntu में gitlab खाते में SSH कुंजी कैसे जोड़ें?

  1. अपने प्रोजेक्ट डायरेक्टरी में टर्मिनल खोलें।
  2. टाइप करें 'ssh-keygen -o -t rsa -b 4096 -C "अपना गीतालाब ईमेल" "और हिट दर्ज करें
  3. 'Vim /home/mnbtech/.ssh/id_rsa.pub' टाइप करें और हिट दर्ज करें (या मैन्युअल रूप से अपना 'id_rsa.pub'from खोलें जहां आपने इसे सहेजा है)
  4. SSH कुंजी दिखाई देगी। उन और नकल

  5. अपने gitlab खाते में जाएं।

  6. प्रोफ़ाइल छवि पर क्लिक करें और सेटिंग पर क्लिक करें
  7. बाईं ओर SSH-Key का चयन करें
  8. फिर उन कुंजी को पेस्ट करें क्लिक कुंजी जोड़ें

SSH- कुंजी जोड़ा जाएगा!

(एनबी अगर आपके पास जनरेट एसएसएच कुंजी का साक्षात्कार है और अनुमति से इनकार किया जा रहा है (सार्वजनिक कुंजी)। आप अपने पूर्वावलोकन ssh कुंजी को हटा दें और नया जनरेट करें और अपने टर्मिनल पर git user.name और ईमेल जोड़ें।)


पिछले निर्देशों की तुलना में उस उत्तर में क्या अलग है?
राल्फफ्राइडल

1

मैंने git@gitlab.com: Permission denied (publickey)निम्नलिखित निर्देशों का उपयोग करके समस्या हल की

  1. DAUD cat ~/.ssh/id_rsa.pub
  2. कॉपी id_rsa.pub(सार्वजनिक कुंजी) अपने getlab `स्थापना करने के लिए -> SSH कुंजियों
  3. DAUD cat ~/.ssh/id_rsa
  4. कॉपी id_rsa(निजी कुंजी) को 'Code_repo-> git_auth-> id_rsa

नोट: मशीन उपयोगकर्ता का ध्यान रखें यदि आप rootअपने DockerFile में उपयोगकर्ता का उपयोग कर रहे हैं या कहीं और तो sudo suरूट उपयोक्ता को सार्वजनिक और निजी कुंजी प्राप्त करने के लिए उपरोक्त कमांड चलाने से पहले उपयोग करें।


1

हमारे मामले में, यह उपयोगकर्ता / क्लाइंट पक्ष पर समस्या नहीं थी, लेकिन Gitlab सर्वर साइड पर।

हम CentOS 7.1 पर एक स्थानीय Gitlab CE 12.9 उदाहरण चला रहे हैं।

हमें पता चला कि सर्वर पर, .sh / अधिकृत_की फ़ाइल ठीक से अपडेट नहीं हो रही थी। उपयोगकर्ताओं को अपने SSH कुंजियों (Gitlab मार्गदर्शिका निम्न) बना सकते हैं और Gitlab सर्वर में जोड़ने, लेकिन सर्वर को अपडेट नहीं करता authorized_keys , तो यह हमेशा अनुमति नहीं दी त्रुटियों के परिणाम देगा।

चलने से अधिकृत_की फ़ाइल को फिर से बनाने के लिए वर्कअराउंड किया गया :

$ sudo gitlab-rake gitlab:shell:setup

यह उन लोगों के लिए काम करेगा जिन्होंने पहले अपनी चाबियों को जोड़ा था रेक कार्य चलाने से । अगले उपयोगकर्ताओं के लिए जो अपनी चाबियाँ जोड़ेंगे, किसी को मैन्युअल रूप से फिर से रेक कार्यों को चलाना होगा।

एक अधिक स्थायी समाधान के लिए गया था नहीं का उपयोग authorized_keys फाइल और बजाय एक का उपयोग Gitlab डेटाबेस पर सूचीबद्ध देखने :

GitLab डेटाबेस GitLab डेटाबेस में SSH उपयोगकर्ताओं को एक तेज़, अनुक्रमित लुकअप के माध्यम से अधिकृत करने का एक तरीका प्रदान करता है। GitLab शेल, यह जांचने के लिए SSH कुंजी के फिंगरप्रिंट का उपयोग करता है कि क्या उपयोगकर्ता GitLab तक पहुंचने के लिए अधिकृत है।

अपनी sshd_configफ़ाइल में निम्न जोड़ें । यह आमतौर पर स्थित है /etc/ssh/sshd_config, लेकिन यह होगा /assets/sshd_configयदि आप सर्वग्राही डॉकर का उपयोग कर रहे हैं:

Match User git    # Apply the AuthorizedKeysCommands to the git user only   
  AuthorizedKeysCommand /opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell-authorized-keys-check git %u %k   
  AuthorizedKeysCommandUser git 
Match all    # End match, settings apply to all users again 

रीलोडेड ओपनएसएसएच:

# Debian or Ubuntu installations   
sudo service ssh reload

# CentOS installations   
sudo service sshd reload 

पुष्टि करें कि एसएसएच यूआई में आपके उपयोगकर्ता की एसएसएच कुंजी को हटाकर, एक नया जोड़कर और रेपो खींचने का प्रयास करके काम कर रहा है।

डिफ़ॉल्ट रूप से (हमारी स्थापना पर डिफ़ॉल्ट रूप से अच्छी तरह से), अधिकृत क्षेत्र में प्रदर्शन_ऑफ़िस फ़ाइल को लिखें > प्रदर्शन ऑप्टिमाइज़ेशन सेटिंग्स। इसलिए हमने इसके बिना Gitlab डेटाबेस का उपयोग किया और इसे अनियंत्रित किया।

यहाँ छवि विवरण दर्ज करें

इंडेक्स किए गए लुकअप को सेट करने और लिखने के बाद अधिकृत_कीज़ फ़ाइल में अनचेक करने के बाद , SSH एक्सेस ठीक हो गया।


1

विंडोज 10 का उपयोग करने वाले किसी और के लिए और उसके लिए काम करने के अलावा और कुछ नहीं:

मेरे मामले में, मुझे ssh के बजाय https के साथ रेपो क्लोन करना था और एक विंडो पॉप-अप-अप के लिए मेरी साख माँगना था। इसके बाद सबकुछ ठीक हो जाता है।


1

मुझे पता है, मैं बहुत देर से जवाब दे रहा हूं और यहां तक ​​कि StackOverflow की पुष्टि की है अगर मैं वास्तव में जवाब देना चाहता हूं। मैं जवाब दे रहा हूं, क्योंकि वास्तव में किसी ने भी वास्तविक समस्या का वर्णन नहीं किया है इसलिए वही साझा करना चाहता था।

मूल बातें

पहले यह समझें कि यहां रिमोट क्या है। रिमोट GitLab है और आपका सिस्टम स्थानीय है इसलिए जब हम रिमोट के बारे में बात करते हैं origin, तो आपके git remote -vआउटपुट में जो भी URL सेट किया जाता है, वह आपका रिमोट URL होता है।

प्रोटोकॉल

मूल रूप से, दो अलग-अलग प्रोटोकॉल पर गिट क्लोन / पुश / पुल काम करता है (अन्य भी हैं) -

  1. HTTP प्रोटोकॉल
  2. एसएसएच प्रोटोकॉल

जब आप एक रेपो क्लोन करते हैं (या दूरस्थ URL को बदलते हैं) और https://gitlab.com/wizpanda/backend-app.git जैसे HTTP URL का उपयोग करते हैं तो यह पहले प्रोटोकॉल यानी HTTP प्रोटोकॉल का उपयोग करता है।

यदि आप रेपो का क्लोन बनाते हैं (या दूरस्थ URL को बदलते हैं) और URL का उपयोग करते हैं, git@gitlab.com:wizpanda/backend-app.gitतो यह SSH प्रोटोकॉल का उपयोग करता है।

HTTP प्रोटोकॉल

इस प्रोटोकॉल में, हर रिमोट ऑपरेशन यानी क्लोन, पुश एंड पुल साधारण प्रमाणीकरण का उपयोग करता है अर्थात आपके रिमोट का उपयोगकर्ता नाम और पासवर्ड (इस मामले में GitLab) जिसका अर्थ है कि प्रत्येक ऑपरेशन के लिए, आपको अपने उपयोगकर्ता नाम और पासवर्ड को टाइप करना होगा जो बोझिल हो सकता है। ।

इसलिए जब आप पुश / क्लोन / क्लोन, GitLab / GitHub आपको अपने उपयोगकर्ता नाम और पासवर्ड के साथ प्रमाणित करते हैं और यह आपको ऑपरेशन करने की अनुमति देता है।

यदि आप यह कोशिश करना चाहते हैं, तो आप कमांड चलाकर HTTP URL पर जा सकते हैं git remote set-url origin <http-git-url>

उस मामले से बचने के लिए, आप SSH प्रोटोकॉल का उपयोग कर सकते हैं।

एसएसएच प्रोटोकॉल

एक साधारण SSH कनेक्शन सार्वजनिक-निजी कुंजी जोड़े पर काम करता है। इसलिए आपके मामले में, GitLab आपको प्रमाणित नहीं कर सकता क्योंकि आप संवाद करने के लिए SSH URL का उपयोग कर रहे हैं। अब, GitLab आपको किसी तरह से जानना चाहिए। उसके लिए, आपको एक सार्वजनिक-निजी कुंजी-जोड़ी बनानी होगी और सार्वजनिक कुंजी GitLab को देनी होगी।

अब जब आप GitLab के साथ पुश / पुल / क्लोन करते हैं, तो GIT (SSH आंतरिक रूप से) डिफ़ॉल्ट रूप से GitLab को आपकी निजी कुंजी प्रदान करेगा और आपकी पहचान की पुष्टि करेगा और फिर GitLab आपको ऑपरेशन करने की अनुमति देगा।

इसलिए मैं उन कदमों को नहीं दोहराऊंगा जो पहले से मुहम्मद द्वारा दिए गए हैं, मैं उन्हें सैद्धांतिक रूप से दोहराऊंगा।

  1. एक प्रमुख जोड़ी बनाएँ ssh-keygen -t rsa -b 2048 -C "माय कॉमन एसएसएच कुंजी"
  2. जनरेट की गई जोड़ी ~/.sshनामित id_rsa.pub(सार्वजनिक कुंजी) और id_rsa(निजी कुंजी) में डिफ़ॉल्ट रूप से होगी ।
  3. आप सार्वजनिक कुंजी को अपने GitLab खाते में संग्रहीत करेंगे (उसी कुंजी का उपयोग कई या किसी सर्वर / खातों में किया जा सकता है)।
  4. जब आप क्लोन / पुश / पुल करते हैं, तो GIT आपकी निजी कुंजी प्रदान करता है।
  5. GitLab आपकी सार्वजनिक कुंजी के साथ निजी कुंजी से मेल खाता है और आपको प्रदर्शन करने की अनुमति देता है।

टिप्स

आपको कम से कम 2048 बाइट्स के साथ हमेशा एक मजबूत rsa कुंजी बनानी चाहिए। तो आज्ञा हो सकती है ssh-keygen -t rsa -b 2048

https://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair

जनरल ने सोचा

दोनों दृष्टिकोण उनके पेशेवरों और विपक्ष हैं। उपरोक्त पाठ टाइप करने के बाद, मैं इस बारे में और खोज करने गया क्योंकि मैंने इस बारे में कभी कुछ नहीं पढ़ा।

मुझे यह आधिकारिक डॉक्टर https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols मिला, जो इस बारे में अधिक बताता है। यहाँ मेरा कहना यह है कि, त्रुटि को पढ़ने और त्रुटि पर एक विचार देकर, आप अपना सिद्धांत या समझ बना सकते हैं और फिर मुद्दे को ठीक करने के लिए कुछ Google परिणामों के साथ मिलान कर सकते हैं :)


0

मैंने ~/.ssh/id_rsa.pubअपनी GitLab सेटिंग्स https://gitlab.com/profile/keys में ज्ञात SSH कुंजी की सूची में अपना नाम जोड़ा । इससे मेरे लिए समस्या हल हो गई। :-)


0

मैं ubuntu 18.04 का उपयोग करता हूं, और यह वास्तव में मेरी स्थानीय मशीन में अनुमति मुद्दा था। समस्या तब हुई जब मैंने अपने .गित फ़ोल्डर में पढ़ने / लिखने की अनुमति दी।


0

वैसे मुझे भी यही समस्या थी और जवाब देने की कोशिश करने के बाद @Khan ने प्रस्ताव रखा। हालाँकि, मैं केवल इसे ओरिजिनल यूआरएल में बदलकर काम करने में सक्षम था। https / config फाइल को https एड्रेस: https://gitlab.com/mygitlabusername/mygitproject.git

चूँकि ssh के माध्यम से पहुँच से इनकार किया गया है, मुझे पता लगा कि https का उपयोग करके कोई समस्या नहीं होनी चाहिए। हालांकि यह रिपॉजिटरी में प्रत्येक पुश के लिए आपके उपयोगकर्ता नाम और पासवर्ड के लिए पूछेगा


0

git config credential.helper storeयदि आपकी साइट TLS / SSL का उपयोग कर रही है तो कृपया उपयोग करें । आशा है कि यह काम करता है


0

ऐसा लगता है कि SSH या HTTPS का उपयोग करके git रिपॉजिटरी तक पहुँचने के दो तरीकों में अंतर है। मेरे लिए, मुझे त्रुटि का सामना करना पड़ा क्योंकि मैं एसएसएच का उपयोग करके अपने स्थानीय भंडार को धक्का देने की कोशिश कर रहा था।

समस्या केवल आपकी परियोजना के लैंडिंग पृष्ठ पर क्लोन बटन पर क्लिक करके और HTTPS लिंक की प्रतिलिपि बनाकर और इसे SSH लिंक को "git @ gitlab ..." प्रारूप के साथ प्रदर्शित करके हल किया जा सकता है।


इस सवाल का जवाब नहीं है।
राल्फफ्राइडल

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