मुझे पता है, मैं बहुत देर से जवाब दे रहा हूं और यहां तक कि StackOverflow की पुष्टि की है अगर मैं वास्तव में जवाब देना चाहता हूं। मैं जवाब दे रहा हूं, क्योंकि वास्तव में किसी ने भी वास्तविक समस्या का वर्णन नहीं किया है इसलिए वही साझा करना चाहता था।
मूल बातें
पहले यह समझें कि यहां रिमोट क्या है। रिमोट GitLab है और आपका सिस्टम स्थानीय है इसलिए जब हम रिमोट के बारे में बात करते हैं origin
, तो आपके git remote -v
आउटपुट में जो भी URL सेट किया जाता है, वह आपका रिमोट URL होता है।
प्रोटोकॉल
मूल रूप से, दो अलग-अलग प्रोटोकॉल पर गिट क्लोन / पुश / पुल काम करता है (अन्य भी हैं) -
- HTTP प्रोटोकॉल
- एसएसएच प्रोटोकॉल
जब आप एक रेपो क्लोन करते हैं (या दूरस्थ 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 आपको ऑपरेशन करने की अनुमति देगा।
इसलिए मैं उन कदमों को नहीं दोहराऊंगा जो पहले से मुहम्मद द्वारा दिए गए हैं, मैं उन्हें सैद्धांतिक रूप से दोहराऊंगा।
- एक प्रमुख जोड़ी बनाएँ ssh-keygen -t rsa -b 2048 -C "माय कॉमन एसएसएच कुंजी"
- जनरेट की गई जोड़ी
~/.ssh
नामित id_rsa.pub
(सार्वजनिक कुंजी) और id_rsa
(निजी कुंजी) में डिफ़ॉल्ट रूप से होगी ।
- आप सार्वजनिक कुंजी को अपने GitLab खाते में संग्रहीत करेंगे (उसी कुंजी का उपयोग कई या किसी सर्वर / खातों में किया जा सकता है)।
- जब आप क्लोन / पुश / पुल करते हैं, तो GIT आपकी निजी कुंजी प्रदान करता है।
- 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 परिणामों के साथ मिलान कर सकते हैं :)
ssh -vvvv git@gitlab.com
अगर यह SSH कुंजी ऊपर उठाता है देखने के लिए