github: कोई समर्थित प्रमाणीकरण विधि उपलब्ध नहीं है


98

मैं गितुब का उपयोग करता हूं और अतीत में अपने लैपटॉप पर सफलतापूर्वक जोड़ा और सिंक की गई फाइलें।

जैसा कि मैंने हाल ही में " PuTTY घातक त्रुटि: असंबद्ध: कोई समर्थित प्रमाणीकरण तरीके उपलब्ध नहीं " चलाने के बाद शुरू किया:

git पुल ओरिजनल मास्टर (या पुश)

तथापि

ssh git@github.com सही प्रतिक्रिया देता है: त्रुटि: हाय उपयोगकर्ता नाम! आपने सफलतापूर्वक प्रमाणित किया है, लेकिन GitHub बंद github.com को शेल एक्सेस कनेक्शन प्रदान नहीं करता है।

गितुब पर खुदाई करने के बाद मैंने पाया यह मोरसेल:

कोई समर्थित प्रमाणीकरण विधियाँ उपलब्ध नहीं हैं आपको पर्यावरण चर GIT_SSH के बारे में पता होना चाहिए, जो कि आपके ssh बोलने वाले क्लाइंट को खोजने के लिए git द्वारा उपयोग किया जाता है, यदि ssh आपके लिए काम नहीं करता है। प्रमाणीकरण स्थापित करने के लिए git इंस्टॉल plink.exe (GIT_SSH के माध्यम से) का उपयोग कर सकता है। यदि हां, तो सुनिश्चित करें कि आपके पास pageant.exe चल रहा है, और आपके द्वारा बनाए गए कुंजी को इसमें लोड किया गया है। यह plink.exe को कुंजी प्रदान करता है; इसके बिना, उपरोक्त त्रुटि होगी।

सुनिश्चित नहीं है कि plink.exe या peagant.exe क्या है .. और यह तथ्य कि ssh git@github.com सही ढंग से प्रमाणित करता है, मुझे आश्चर्य होता है कि यहां सबसे अच्छा समाधान क्या है .. मैं निश्चित रूप से मेरे सेटअप को ओवरप्ले करना नहीं चाहता हूं यदि नहीं ज़रूरी।

जवाबों:


101

आप अपने घर निर्देशिका में ".profile" नामक एक फ़ाइल बना सकते हैं, मेरे लिए वह C: \ Users \ [user] है

उस फ़ाइल के अंदर, कोड की निम्नलिखित पंक्ति डालें:

GIT_SSH="/usr/bin/ssh.exe"

यह gIT_SSH वातावरण चर को git के साथ शामिल ssh क्लाइंट का उपयोग करने के लिए सेट करेगा।

जब आप अपना Git Bash कमांड लाइन शुरू करते हैं तो .profile स्क्रिप्ट निष्पादित हो जाती है।

संपादित करें: यह मेरा लाभ है। यह पहली बार git कमांड प्रॉम्प्ट शुरू करने पर आपसे आपका पासवर्ड पूछेगा, फिर इसे तब तक याद रखेगा, जब तक आप अपने कंप्यूटर को रिबूट नहीं करते। बहुत आसान है तो आपको हर बार जब आप कुछ करना चाहते हैं तो अपना पासवर्ड दर्ज करते रहना होगा।

SSH_ENV="$HOME/.ssh/environment"
GIT_SSH="/usr/bin/ssh.exe"

function start_agent {
echo "Initializing new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}

# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cygwin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi

8
+1 मेरे पास कुछ भी नहीं है लेकिन समस्या है जब git ssh की ज़रूरतों के लिए Putty / Pageant का उपयोग करना। अंतर्निहित ssh क्लाइंट का उपयोग करना अद्भुत काम करता है। यह बताता है कि यदि आप इसे स्वयं निष्पादित करते हैं तो ssh git@github.com ठीक क्यों लौटता है, लेकिन git कॉन्फ़िगर किए गए टूल (पुट्टी / पेजेंट) का उपयोग नहीं करता है।
enriquein

14
मेरे लिए यह सिर्फ GIT_SSH = "/ bin / ssh.exe" (विंडोज पर) है। धन्यवाद!
मार्टिन कोनिसक

1
@ जस्टिन आप mingw32 प्रांप्ट का उपयोग कर रहे हैं?
रेक्स मॉर्गन

2
विंडोज 7 में cygwin का उपयोग करना, ऊपर जवाब में काम किया, लेकिन मैं करने के लिए आवश्यक GIT_SSHकरने के लिए .bash_profileऔर नहीं.profile
Gabe

2
Git Bash का उपयोग करते हुए विंडोज 10 के साथ मेरे मामले मेंGIT_SSH="D:\Program Files\Git\usr\bin\ssh.exe"
पॉल

31

TortoiseGit का उपयोग करना

TortoiseGit> सेटिंग ... नेटवर्क ... SSH क्लाइंट: C:\Program Files\Git\usr\bin\ssh.exe

मेरे अलग-अलग स्थान। एक कंप्यूटर पर यह थाC:\Program Files (x86)\Git\bin\ssh.exe

tortoisegit


5
धन्यवाद। यह काम किया। ध्यान दें: आपको उस जगह के लिए शिकार करना पड़ सकता है, जहां 'ssh.exe' किसी मशीन पर रहती है। मेरे लिए यह C: \ Program Files \ Git \ usr \ bin \ ssh.exe (शायद एक आउट-ऑफ-डेट मशीन पर) है
pestophagous

10

"... मुझे यकीन नहीं है कि plink.exe या peagant.exe क्या है ..."

चूँकि आप पूछते हैं: पलक और पेजेंट पुट्टी सूट का हिस्सा है, जो एसएसएच का एक कार्यान्वयन है जो लिनक्स और विंडोज का समर्थन करता है और विंडोज पर पूरी तरह से प्रभावी है।

SSH

सिक्योर शेल (SSH) डेटा संचार हासिल करने के लिए एक क्रिप्टोग्राफ़िक नेटवर्क प्रोटोकॉल है। यह एक SSH क्लाइंट के साथ SSH क्लाइंट एप्लिकेशन को कनेक्ट करते हुए क्लाइंट-सर्वर आर्किटेक्चर में एक असुरक्षित नेटवर्क पर एक सुरक्षित चैनल स्थापित करता है। सामान्य अनुप्रयोगों में रिमोट कमांड-लाइन लॉगिन, रिमोट कमांड निष्पादन शामिल है, लेकिन एसएसएच के साथ किसी भी नेटवर्क सेवा को सुरक्षित किया जा सकता है।

यदि आपने कभी टेलनेट का उपयोग किया है, तो वह ऐसा है (लेकिन अधिक सुरक्षित): यह आपको लिनक्स होस्ट के बैश शेल (कमांड लाइन) को दूरस्थ रूप से एक्सेस करने की अनुमति देता है।

पुट्टी

PuTTY एक फ्री और ओपन-सोर्स टर्मिनल एमुलेटर, सीरियल कंसोल और नेटवर्क फाइल ट्रांसफर एप्लिकेशन है। यह SCP, SSH, टेलनेट, rlogin सहित कई नेटवर्क प्रोटोकॉल का समर्थन करता है ...

विंडोज पर यह SSH प्रोटोकॉल (ऊपर) के तहत एक लिनक्स होस्ट की कमांड लाइन को दूरस्थ रूप से एक्सेस करने के लिए प्रमुख सॉफ्टवेयर है। विंडोज में .exe एक्सटेंशन एक्जीक्यूटिव के लिए हैं। यदि आप लिनक्स में हैं तो plink.exe & pageant.exe के बारे में वे नोट संभवत: लागू नहीं होते हैं । PuTTY शामिल हैं

पलक : PuTTY वापस करने के लिए एक कमांड लाइन इंटरफ़ेस समाप्त होता है

पेजेंट : PuTTY, PSCP और Plink के लिए एक SSH प्रमाणीकरण एजेंट

से ( http://en.wikipedia.org/wiki/Secure_Shell#Key_management )

जब सार्वजनिक कुंजी दूरस्थ छोर पर मौजूद होती है और मिलान करने वाली निजी कुंजी स्थानीय छोर पर मौजूद होती है, तो पासवर्ड टाइप करना अब आवश्यक नहीं है ... अतिरिक्त सुरक्षा के लिए निजी कुंजी को स्वयं पासफ़्रेज़ के साथ लॉक किया जा सकता है।

इसलिए गीथूब एक लिनक्स मशीन पर होस्ट किया गया है और कनेक्शन को सुरक्षित करने के लिए एसएसएच का उपयोग करता है। SSH या तो पासवर्ड या कुंजी के साथ प्रमाणित करता है, कई होस्ट (github?) केवल कुंजियों के साथ प्रमाणित होता है। आप सेटअप जाहिरा तौर पर एक कुंजी के साथ प्रमाणित करने की कोशिश कर रहे हैं। कुंजी और होस्ट एक-के-लिए नहीं हैं: आपके पास एक ही होस्ट के लिए दो कुंजी और / या एक ही कुंजी के लिए दो होस्ट हो सकते हैं, इसलिए उन्हें प्रबंधित करने की आवश्यकता है। यदि आप विंडोज में हैं, तो आपका SSH सत्र संभवतः पलक के माध्यम से पहुँचा जा सकता है और आपकी कुंजियाँ संभवतः Pageant द्वारा प्रबंधित की जाती हैं।

हर बार जब आप पेजेंट को लोड करते हैं, तो उस कुंजी को आयात करें। यदि आपने ऐसे मार्गदर्शकों का अनुसरण किया है जिन्होंने "अपनी कुंजी आयात करें" कहा, और देखा कि यह काम करता है, लेकिन यह अब काम नहीं करता है, तो अध्याय 9 देखें : प्रमाणीकरण के लिए पेजेंट का उपयोग करना

एक आखिरी टिप यदि आप विंडोज पर हैं: आपके पास विभिन्न उपकरणों द्वारा स्थापित पुट्टी सूट के कई उदाहरण हो सकते हैं। TortoiseGit, उदाहरण के लिए, अपनी खुद की स्थापित करता है।


8

मैंने इस समस्या का अनुभव किया क्योंकि मेरा GIT_SSHTortoiseSVN संस्करण की ओर इशारा था Plink.exe। मैंने इसे TortoiseGit संस्करण को इंगित करने के लिए बदल दिया, cmd को फिर से शुरू किया और यह काम किया।

मुझे ठीक से याद नहीं है, लेकिन TortoiseSVN संस्करण 32-बिट संस्करण हो सकता है, और TortoiseGit संस्करण 64-बिट (में स्थित है Program Files, नहीं Program Files (x86)) था।

अपने GIT_SSHenv var को दोबारा जांचें ।

मैं सामान्य के साथ git का उपयोग करना पसंद करता हूं cmd.exe(निश्चित रूप से Console2 में)


आपको ठीक से याद है; मेरा एक ही मुद्दा था, GIT_SSH के साथ TortoisePlink.exe के 32-बिट TortoiseSVN संस्करण की ओर इशारा करता है। इसे TortoiseGit के संस्करण पर ले जाना काम किया।
नाइटविट

6

विंडोज पर TortoiseGit उपयोगकर्ताओं के लिए

मूल रूप से, मैंने अपने Github / Bitbucket रिपॉजिटरी में से अधिकांश को SSH रिपॉजिटरी URL का उपयोग करके सेटअप किया था (मूल रूप से) यह TortoiseGit को हर एक क्रिया में आपके पासवर्ड के लिए संकेत देने से रोकने के लिए एकमात्र सुविधाजनक तरीका हुआ करता था।

लेकिन TortoiseGit को इस तरह सेट करना हमेशा बालों को खींचने वाला दर्दनाक था। हर बार मुझे सही तरीके से सेट होने में घंटों लग गए, क्योंकि डिफ़ॉल्ट इंस्टॉलेशन विकल्प कभी भी काम नहीं करते थे (2016 तक, शीश!)।

लेकिन TortoiseGit में अब HTTPS के लिए बेहतर पासवर्ड प्रबंधन है, और Github वास्तव में जहाँ संभव हो HTTPS URL का उपयोग करने की सलाह देता है।

SSH URL: git@github.com:User/repo-name.git

HTTPS URL: https://github.com/User/repo-name.git

HTTPS के लाभ हैं:

  • SSH कुंजियों का प्रबंधन या निर्माण नहीं
  • pageant.exeलगातार चलने की आवश्यकता नहीं है (जो प्रत्येक लॉन्च पर आपके पासवर्ड का अनुरोध करता है)
  • ऑस्ट्रेलिया से TortoiseGit का उपयोग करते हुए, मुझे लगता है कि HTTPS पर क्लोन SSH की तुलना में 5-10 गुना अधिक तेज हैं

+ 'git config --global http.sslVerify false'
माइक

5

यदि आप पेजेंट का उपयोग कर रहे हैं और आपके पीसी को रिबूट करने (या अन्यथा बंद करने और पेजेंट को फिर से खोलने) के बाद प्रश्न में वर्णित त्रुटि हो रही है:

त्रुटि पेजेंट के कारण हो सकती है जो आपके GitHub SSH कुंजी को सक्रिय रूप से लोड नहीं करता है। डिफ़ॉल्ट रूप से, Pageant स्वचालित रूप से पिछले सत्र से कुंजियों को लोड नहीं करता है जब यह शुरू होता है।

कुंजी लोड करने के लिए:

  1. पेजेंट खोलें। (विंडोज पर, अगर पेजेंट चल रहा है, तो इसमें सिस्टम ट्रे में एक आइकन होगा। उस पर डबल-क्लिक करें।)
  2. कुंजी बटन जोड़ें पर क्लिक करें, और अपने मौजूदा GitHub SSH कुंजी को जोड़ने के लिए आगे बढ़ें।

भविष्य में इस समस्या से बचने के लिए, आप Pageant को कॉन्फ़िगर कर सकते हैं जब यह शुरू होता है तो अपनी कुंजी को स्वचालित रूप से लोड करने के लिए। (यदि आपकी कुंजी पासवर्ड से सुरक्षित है, तो पासवर्ड आपके लिए तुरंत संकेत देगा।)

ऐसा करने के लिए कदम (यह मानते हुए कि आपके पास विंडोज शुरू होने पर चलाने के लिए पेजेंट कॉन्फ़िगर है):

  1. विंडोज शुरू होने पर पेजेंट चलाने के लिए विंडोज द्वारा उपयोग किए जाने वाले शॉर्टकट का पता लगाएं। (यह स्टार्टअप फ़ोल्डर में हो सकता है, जिसे स्टार्ट> रन> द्वारा खोला जा सकता है shell:startup)
  2. शॉर्टकट के गुण संवाद में, SSH कुंजी फ़ाइल का पूरा पथ और फ़ाइल नाम "लक्ष्य" फ़ील्ड में जोड़ें।

संदर्भ और पूरा विवरण: http://blog.shvetsov.com/2010/03/making-pageant-automatically-load-keys.html


4

मेरा मुद्दा यह था कि मैं अपने github उपयोगकर्ता नाम का उपयोग करने का प्रयास कर रहा था। जीथब का उपयोग करते समय स्पष्ट रूप से (या यह एक गीट बात है?) , यदि आप कुंजी-आधारित प्रमाणीकरण का उपयोग करते हैं, तो आपको अपना उपयोगकर्ता नाम सेट करना होगाgit

मुझे यकीन नहीं है कि आपको एक उपयोगकर्ता नाम की भी आवश्यकता क्यों है - शायद कोई और जानकार इसे समझा सकता है?


निजी रिपॉजिटरी की क्लोनिंग करते समय, यह git@github.com: यूजरनेम / रिपोजिटरी.जीट जैसे URL होगा। मैं या तो इसके पीछे विज्ञान पर पूरी तरह यकीन नहीं है लेकिन ऐसा लगता है Git हर Github खाते के लिए एक सामान्य उपयोगकर्ता नाम है
शीतकालीन

1
PLink / Pageant ठीक काम करता है। यह वास्तविक मुद्दा है, और कुछ का उपयोग ssh://git@github.com/myname/repo.gitकरना बहुत अच्छा होगा। अच्छा काम। क्यों के लिए, मुझे लगता है कि यह सुरक्षा को बंद करना है। 'गिट' उपयोगकर्ता का लॉगिन अक्षम है, इसलिए कोई भी उस तरह से सिस्टम में नहीं तोड़ सकता है। उनके पास गिथब से बात करने के लिए एक वैध कुंजी भी है, और एक बार उनके पास एक वैध कुंजी होने के बाद, वे इसे लॉग इन करने के लिए उपयोगकर्ता के खिलाफ मिलान कर सकते हैं।
ChokesMcGee

2

मेरे विंडोज 7 मशीन पर जीआईटी संस्करण 1.8.3.msysgit.0 का उपयोग करके विंडोज के लिए जीथब चल रहा है। मैंने पाया कि अपने सिस्टम एनवायरमेंट वेरिएबल GIT_SSH को C: \ Program Files (x86) \ Git \ bin \ ssh.exe में अपडेट कर रहा था। इसने OpenShift के git रेपो से संपर्क करने के साथ मेरा मुद्दा भी तय किया।


2

विंडोज 8 पर मेरे लिए काम किया: GIT_SSH चर plink.exe की ओर इशारा कर रहा था, इसे ssh बाइनरी को इंगित करने के लिए सिस्टम सेटिंग्स में बदल दिया, और जिसने समस्या को ठीक कर दिया है। खोज के लिए पूरा रास्ता खोजने के लिए, दौड़ें:

where ssh

2

इस मुद्दे को हल करने के लिए मैंने यही किया था।

मैं विंडोज 10 पर गिट बैश का उपयोग कर रहा था

मैंने पेजेंट शुरू किया, ऐड की दबाया,

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

C: \ Users \ username \ .shsh फ़ोल्डर में नेविगेट किया गया और मेरी कुंजी को चुना

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

मैं फिर एक जोर का धक्का देने की कोशिश करता हूं और इस बार काम किया।


याद रखें, आपको संभवतः हर बार ऐसा करना होगा जब आप अपने विंडोज पीसी को रिबूट करेंगे - आप अपने स्टार्टअप फोल्डर में पेजेंट को सही कमांड लाइन तर्क के साथ अपने निजी कुंजी फ़ाइल में शॉर्टकट के रूप में डाल सकते हैं, लेकिन यदि आपने अपने पासवर्ड को सेट किया है निजी कुंजी जब आपने इसे बनाया था, तो आपको अपने टूल ट्रे में पेजेंट आइकन पर राइट-क्लिक करना होगा, "कुंजी जोड़ें" चुनें, और प्रत्येक रिबूट के बाद इसे भरें।
वेबजे


1

मुझे इसी समस्या का सामना करना पड़ा, हालाँकि GIT_SSH समाधान मेरे लिए एक बार काम करता दिखाई दिया। कंप्यूटर पुनरारंभ होने के बाद मुझे एहसास हुआ कि यह कुछ और था, क्योंकि मैं अपने निजी रिपॉजिटरी को क्लोन करने में सक्षम था, जिसमें गिट बैश या कमांड प्रॉम्प्ट का उपयोग करने में कोई समस्या नहीं थी, लेकिन सबमिलीगेट प्लगइन के साथ सब्लिम टेक्स्ट 3 में नहीं। मेरा समाधान सरल था और वास्तव में क्या है @BlueRaja है - डैनी Pflughoeft उल्लेख किया है, लेकिन मैंने सोचा कि यह अपनी दिशा का उपयोग कर सकते हैं;)

मूल रूप से आपको बस ~/.ssh/configउपयोगकर्ता नाम संपादित करने और सुनिश्चित करने की आवश्यकता है git। आप इसे Github के लिए एक विशिष्ट SSH कुंजी का उपयोग करने के लिए भी कह सकते हैं - मेरी ~/.ssh/configफ़ाइल निम्नलिखित की तरह दिखती है:

Host gh
    Hostname github.com
    User git
    IdentityFile ~/.ssh/github_rsa.pub

मेरे पास दिन भर में किए जाने वाले अन्य कामों की संख्या के कारण जीथब के लिए एक विशिष्ट कुंजी है, लेकिन यदि आप केवल एक ही है तो यह आमतौर पर ऐसा होगा ~/.ssh/id_rsa.pubजैसे गीथूब यहां बताते हैं

मुझे पता है कि हर किसी का एक अलग समाधान होता है, लेकिन मैं इसे यहां छोड़ दूंगा, जो बिना किसी फिक्स के इस लेख का सामना कर सकता है। सौभाग्य!


1

मुझे यह त्रुटि तब मिली जब GitHub से एक रिपॉजिटरी को क्लोन करने के लिए TortoiseGit का उपयोग किया गया। "लोड पोट्टी कुंजी" पर क्लिक करके और Git क्लोन संवाद में एक कुंजी फ़ाइल (* .pkk) का चयन करके फिक्स्ड।



0

मुझे यह समस्या हुई (प्रत्यक्ष ssh ने काम किया, लेकिन git पुल विफल रहा) मेरे git के रिमोट नहीं होने के कारण मुझे लगा कि यह क्या है।

हां, हां, मुझे पता है कि यह एक मूर्खतापूर्ण गलती है, लेकिन ऐसा होता है और यह जांच के लायक है।

उपयोग git remote -v


0

GitExtensions को 3.3.0.7719 संस्करण में अपडेट करने के बाद मेरे पास एक समान मुद्दा था

किसी तरह यह OpenSSH के बजाय PuTTY का उपयोग करने के लिए मेरी प्रमाणीकरण सेटिंग्स को वापस कर दिया।

उस संस्करण में यहां वह मेनू है जिसे मैंने ओपनएसएसएच को फिर से सक्षम करने के लिए उपयोग किया था:

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

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