Github अनुमति से इनकार किया: ssh ऐड एजेंट की कोई पहचान नहीं है


148

यह GitHub तक पहुँचने का मेरा पहला अवसर है और मुझे कंसोल का उपयोग करने का अनुभव नहीं है। मैं एक मैकबुक पर बैश का उपयोग कर रहा हूं। जब मैं GitHub तक पहुंचने का प्रयास करता हूं, तो मुझे यह मिलता है:

git clone git@github.com:dhulihan/league-of-legends-data-scraper.git
Cloning into 'league-of-legends-data-scraper'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

मैंने अनुमति से इनकार किए जाने के बारे में गीथब पृष्ठ पर दिए गए निर्देशों का पालन करने की कोशिश की है।

जब मैं उपयोग करता हूं ssh -vT git@github.com, तो मुझे निम्नलिखित मिलते हैं:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to github.com [192.30.252.129] port 22.
debug1: Connection established.
debug1: identity file /Users/XXXX/.ssh/id_rsa type -1
debug1: identity file /Users/XXXX/.ssh/id_rsa-cert type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /Users/XXXX/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/XXXX/.ssh/id_rsa
debug1: Trying private key: /Users/XXXX/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

अगला, eval "$(ssh-agent -s)""एजेंट पीआईडी ​​2314" ssh-add -lलौटाता है , हालांकि रिटर्न "एजेंट की कोई पहचान नहीं है।"

और वह वह जगह है जहां मैं फंस गया हूं।


क्या आपके पास SSH कुंजी है? क्या आपने इसे अपने जीथब खाते के साथ सूचीबद्ध किया है? क्या आपके पास अपने मैक की चाबी है?
इटन रिस्नर

मैं उस प्रश्न के उत्तर की तलाश में था (इस पूरे सिस्टम से परिचित नहीं), और यह पाया: mac.github.com इसने मेरी सभी समस्याओं को हल कर दिया। मैं इसकी पुरजोर सलाह देता हूँ। सही दिशा में धक्का देने के लिए धन्यवाद, एतान!
डार्क

4
आप इस प्रश्न का उत्तर (इस बारे में और विवरण के साथ कि यह आपकी समस्या कैसे हल करता है) और आपके उत्तर को स्वीकार करना चाहते हैं।
इटन रिस्नर

ठीक है, मैंने जवाब प्रस्तुत कर दिया है। एसओ बता रहा है कि मैं केवल 2 घंटे में इसे स्वीकार कर सकता हूं।
डार्क

जवाबों:


194

इस उत्तर में पूर्ण विवरण ।

सारांश में, जब ssh-add -l"एजेंट की कोई पहचान नहीं होती है", इसका मतलब यह है कि उपयोग की जाने वाली कुंजियाँ ssh(जैसे फ़ाइलों में संग्रहीत ~/.ssh/id_rsa, जैसे ~/.ssh/id_dsa, आदि) या तो गायब हैं, वे ज्ञात नहीं हैं ssh-agent, जो प्रमाणीकरण एजेंट है, या यह कि उनकी अनुमतियां गलत तरीके से सेट किए गए हैं (उदाहरण के लिए, विश्व लेखन योग्य)।

यदि आपकी चाबियाँ गायब हैं या यदि आपने कोई भी जेनरेट नहीं किया है ssh-keygen -t rsa, तो ssh-addउन्हें जोड़ने के लिए उपयोग करें।

यदि कुंजियाँ मौजूद हैं, लेकिन ज्ञात नहीं हैं ssh-agent(जैसे यदि वे एक गैर-मानक फ़ोल्डर में हैं), तो ssh-add /path/to/my-non-standard-ssh-folder/id_rsaउन्हें जोड़ने के लिए उपयोग करें।

देखें इस सवाल का जवाब है, तो आप के साथ परेशानी हो रही है ssh-addया  ssh-agent


4
एक अच्छे और छोटे उत्तर के लिए लिंक के लिए @Doedoe धन्यवाद। और जिनके पास कुंजी (यानी कई गिट खाते) हैं, उनके ssh-add /path/to/keyXलिए आपको प्रत्येक के लिए उपयोग करना पड़ सकता है , विशेष रूप से अगर उनके पास गैर-मानक नाम हैं। यहाँ विवरण: stackoverflow.com/questions/3225862/… (एक अच्छा जवाब)
tuk0z

इसके लिए धन्यवाद। मैं यहां फंस गया .. लेकिन मुझे एहसास हुआ कि मुझे समस्या के अनुमत भाग को हल करने के बाद ssh-add फिर से चलाने की आवश्यकता है । इसके बाद ssh -vT git@github.comकाम नहीं किया। मुझे उपर्युक्त टिप्पणीकार की तरह पूर्ण मार्ग जोड़ने की आवश्यकता थी । तब, यह सब ग्रेवी थी।
जंगलबेदेव

2
दूसरे मामले में मैं अपना पासफ़्रेज़ भूल गया और मैंने help.github.com/articles/how-do-i-recover-my-ssh-key-passphrase
Malder

111

इसे इस्तेमाल करे:

ssh-add ~/.ssh/id_rsa

मेरे लिए काम किया


5
नमस्ते, एसओ में आपका स्वागत है। कृपया अपने कोड की व्याख्या करें, ताकि आपके साथी उपयोगकर्ता समझ सकें कि क्या हो रहा है। चीयर्स।
कुलथु

4
जब आप रिबूट करते हैं तो आपकी चाबियाँ चली जाती हैं और आपको उन्हें फिर से 'एसश-ऐड' करना होता है।
लौकी

@Louwki हाँ ... यह सुपर कष्टप्रद है। क्या आप उसके आसपास का रास्ता जानते हैं?
क्रिस Cirefice

3
@ChrisCirefice बस ssh-add करें एक पैरामीटर के साथ उन्हें अपने किचेन में स्थायी रूप से जोड़ने के लिए। ssh-add -K ~ /। ssh / [आपका-निजी-कुंजी]
Louwki

1
मेरे मामले में, निजी कुंजी के लिए फ़ाइल अनुमतियां गलत थीं। chmod 600 ~/.ssh/id_rsaतब तक तय हो गया ,ssh-add ~/.ssh/id_rsa
मोर्टेज़ा ज़िया

39

2019 ANSWER macOS सिएरा और हाई सिएरा और कैटालिना के लिए:

पुनश्च: अन्य जवाबों में से अधिकांश में आपको एक नया ssh कुंजी बनाना होगा ... लेकिन आपको ऐसा करने की आवश्यकता नहीं है :)

जैसा कि https://openradar.appspot.com/27348363 पर विस्तार से वर्णित है , YOSemite तक macOS / OS X कमांड द्वारा जोड़े गए SSH कुंजियों को याद करते थेssh-add -K <key>

तो यहाँ 4 कदम हैं जो मुझे काम करने के लिए उठाने थे:

1: ssh-add ~/.ssh/PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

2: निम्नलिखित में जोड़ें~/.ssh/config

Host * 
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

3: किसी भी gitconfig प्रविष्टि को हटाने के लिए सुनिश्चित करें जो osxkeychain सहायक का उपयोग करें:

 https://github.com/gregory/dotfiles/commit/e38000527fb1a82b577f2dcf685aeefd3b78a609#diff-6cb0f77b38346e0fed47293bdc6430c6L48

4: प्रभावी होने के लिए अपना टर्मिनल पुनः आरंभ करें।


3
शानदार जवाब, मैं खुद इसका उल्लेख करने जा रहा था! जाहिर है, OS X 10.12.2 और बाद में स्वचालित रूप से पहचान को ssh- एजेंट में लोड नहीं करता है (जो मुझे लगता है कि वास्तव में एक मूर्खतापूर्ण प्रयोज्य निर्णय है, लेकिन मैं सुरक्षा निहितार्थ समझता हूं)। इसलिए, आपको मैन्युअल रूप से लोड करने के लिए SSH कॉन्फ़िगरेशन को संशोधित करने की आवश्यकता है। मैं सिर्फ यह चाहता हूं कि इंटरनेट की खोज के एक घंटे के बजाय त्रुटि आउटपुट बेहतर समाधान की ओर ले जाएगा।
क्रिस सरीफाइस

12

मुझे उसी समस्या पर थोड़ी देर के लिए रोक दिया गया है, जिसे मैंने अंततः हल कर दिया।

मेरी समस्या : मैं किसी भी धक्का पर अमल नहीं कर सका। मैं अपना रिमोट (उपयोग करके git remote -v) देख और देख सकता था , लेकिन जब मैंने निष्पादित किया git push origin master, तो यह वापस आ गया: Permission denied (publickey). fatal: Could not read from remote repository.और इसी तरह।

मैंने इसे कैसे हल किया:

  • मैंने एक कुंजी का उपयोग कर उत्पन्न कियाssh-keygen -t rsa । कुंजी फ़ाइल (जब पूछा गया) के लिए एक नाम दर्ज करना बेकार था।
  • मैं तब कर सकता था कुंजी (git में) जोड़ : ssh-add /Users/federico/.ssh/id_rsaजो सफलतापूर्वक लौट आयाIdentity added: /Users/myname/.ssh/id_rsa (/Users/myname/.ssh/id_rsa)
  • मैंने SSH कुंजी को github में जोड़ा इस हेल्प पेज का उपयोग करके
  • गितुब के 'अनुमति से इनकार पबलीकी' सहायता पृष्ठ में सभी कमांडों की कोशिश करने के बाद, केवल ssh-add -lकमांड ने काम किया / उपयोगी लग रहा था (पिछले चरणों को चलाने के बाद), इसने सफलतापूर्वक मेरी कुंजी वापस कर दी।अंतिम चरण आपको दिखाता है कि आपके GitHub पृष्ठ पर अपनी सार्वजनिक कुंजी की जाँच कहाँ करें। और यह कमांड आपकी सभी चाबियों को जांचने में मदद करेगी ls -al ~/.ssh:।

फिर धक्का कमान ने आखिरकार काम किया!

मुझे उम्मीद है कि इससे सहायता मिलेगी ! सभी को शुभकामनाएं।


7

निम्न आदेश चलाएँ:

ssh-keygen -t rsa
ssh-add /Users/*yourUserNameHere*/.ssh/id_rsa** 
pbcopy < ~/.ssh/id_rsa.pub**

अपने Github खाते में जाएं : https://github.com/settings/profile

1) क्लिक करें: SSH और GPG कुंजियाँ

2) नई SSH कुंजी और इसे वहाँ विगत करें

3) SSH कुंजी जोड़ें

किया हुआ!


Yup - यदि आप id_rsa.pub फ़ाइल बनाने के अन्य चरणों से गुज़रे हैं, तो उस pbcopy लाइन को कॉपी और पेस्ट करें, जो आपके क्लिपबोर्ड में कुंजी को कॉपी करती है और @zouhair निर्देशों का पालन करती है - github को आपकी कुंजी जानने की आवश्यकता है। विशेष रूप से यदि आप 2FA का उपयोग कर रहे हैं।
davidrynn

मैं थोड़ा भ्रमित हूं क्योंकि वर्तमान डॉक्स का कहना है कि gitub_rsa / github_rsa.pub बनाता है। मेरे पास मेरी / ssh निर्देशिका में दोनों हैं और फिर भी मैं "अनुमति प्राप्त करने के लिए" प्रतीत नहीं हो सकता। मैंने बिना किसी लाभ के id_rsa का उपयोग करके उसी निर्देशिका में प्रतियां बनाई हैं।
मार्क लव

6

सबसे पहले आपको
मैक में अपने टर्मिनल में या जो भी आप विंडो में उपयोग करते हैं, उसके लिए इस प्रकार के ssh डायरेक्टरी में जाने की जरूरत है

cd ~/.ssh

अब यह ssh में है
। यहाँ आप अपने सभी प्रोजेक्ट्स से संबंधित ssh key / files पा सकते हैं। अब, यदि कोई ssh कुंजी उपलब्ध है तो आपको दिखाने के लिए निम्न कमांड टाइप करें

ls

यह आपको सभी उपलब्ध ssh दिखाएगा, मेरे मामले में
अब दो थे , आपको इसमें ssh जोड़ने के लिए एक एजेंट शुरू करना होगा। इस प्रकार निम्नलिखित कमांड के लिए

eval "$(ssh-agent -s)"

अब अंतिम लेकिन कम से कम आप इस एजेंट प्रकार में निम्नलिखित कमांड में एक ssh जोड़ देंगे

ssh-add ~/.ssh/your-ssh

बदलने के

अपने ssh फ़ाइल नाम के साथ अपने ssh को बदलें जिसे आपको सूची प्रपत्र दूसरा चरण मिला ls command


5

यह किसी भी नए टर्मिनल के लिए कारण हो सकता है, एजेंट आईडी अलग है। आपको एजेंट के लिए निजी कुंजी जोड़ने की आवश्यकता है

$ ssh-add <path to your private key>

1

एक अतिरिक्त तत्व जो मुझे एहसास हुआ है कि आम तौर पर .shsh फ़ोल्डर आपके रूट फ़ोल्डर में Mac OS X / Users / में बनाया जाता है। यदि आप दूसरे फ़ोल्डर से ssh -vT git@github.com का उपयोग करने का प्रयास करते हैं, तो इससे आपको एक त्रुटि मिलेगी, भले ही आपने सही कुंजी जोड़ दी हो।

आपको सफलतापूर्वक प्रमाणित करने के लिए वर्तमान फ़ोल्डर से फिर से कुंजी जोड़ने की आवश्यकता है (ssh-add 'id_rsa के लिए सही रास्ता)' (यह मानते हुए कि आपने पहले ही Git में अपनी प्रोफ़ाइल की कुंजी अपलोड कर दी है)


1

यह मेरे लिए काम किया:
chmod 700 .ssh chmod 600 .ssh/id_rsa chmod 644 .ssh/id_rsa.pub

फिर, इसे टाइप करें: ssh-add ~/.ssh/id_rsa


मुझे नहीं लगता कि सवाल ~/.sshअनुमतियों के बारे में है। फिर भी, आप पूरी कमांड (यहां chmod) जोड़कर और अपने स्पष्टीकरण में सुधार कर सकते हैं कि यह क्या करता है और इसकी आवश्यकता क्यों है।
रॉबर्ट

0

लंबे समय तक संघर्ष करने के बाद मैं आखिरकार विंडोज पर इस मुद्दे को हल करने में सक्षम था, मेरे लिए उपयोगकर्ता env चर GIT_SSH को इंगित किया गया था

"C: \ Program Files (x86) \ WinScp \ PuTTY \ plink.exe"

जो WinScp के साथ स्थापित किया गया था। मैंने डिफ़ॉल्ट ssh.exe का उपयोग करने के लिए पॉइंटिंग को बदल दिया है जो git- scm "C: \ Program Files \ Git \ usr \ bin \ ssh.exe" के साथ आता है


0

BitBucket के लिए कदम:

यदि आप नई कुंजी उत्पन्न नहीं करना चाहते हैं, SKIP ssh-keygen

ssh-keygen -t rsa 

सार्वजनिक कुंजी को क्लिपबोर्ड पर कॉपी करें:

clip < ~/.ssh/id_rsa.pub

बिट बाल्टी में प्रवेश करें: प्रोफ़ाइल पर जाएं -> सेटिंग्स -> एसएसएच कुंजी (सुरक्षा टैब में) कुंजी जोड़ें पर क्लिक करें, बॉक्स में कुंजी चिपकाएं, एक वर्णनात्मक शीर्षक जोड़ें

Git Bash पर वापस जाएं:

ssh-add -l

आपको मिलना चाहिये :

2048 SHA256:5zabdekjjjaalajafjLIa3Gl/k832A /c/Users/username/.ssh/id_rsa (RSA)

अब: git pullकाम करना चाहिए


0

बैकअप से हार्ड ड्राइव को पुनर्स्थापित करने के बाद मेरे पास यह समस्या थी।

मेरी समस्या: मैं अपने रिमोट (git रिमोट -v का उपयोग करके) की जाँच और देख सकता था, लेकिन जब मैंने git पुश ओरिजिन मास्टर निष्पादित किया, तो यह वापस आ गया: अनुमति से इनकार (publickey)। घातक: दूरस्थ भंडार से नहीं पढ़ सकता था।

मेरे पास पहले से ही SSH फ़ोल्डर और SSH कुंजियाँ थीं, और उन्हें टर्मिनल के माध्यम से जोड़ रहा था (ssh-add /path/to/my-ssh-folder/id_rsa ) सफलतापूर्वक अपनी पहचान जोड़ी, लेकिन मैं अभी भी धक्का नहीं दे सका और अभी भी वही त्रुटि मिली। एक नई कुंजी उत्पन्न करना मेरे लिए एक बुरा विचार था, क्योंकि यह AWS पर अन्य बहुत सुरक्षित अनुमतियों से बंधा था।

यह कुंजी के बीच की कड़ी को बाहर कर देता है और मेरी जीथूब प्रोफाइल टूट गई है।

उपाय: प्रोफ़ाइल> सेटिंग्स> SSH और GPG कुंजी में Github की कुंजी को पुनः जोड़ने से समस्या हल हो गई।

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

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