GitHub त्रुटि संदेश - अनुमति अस्वीकृत (publickey)


701

किसी ने भी इस त्रुटि को देखा और जाना कि क्या करना है?

मैं टर्मिनल का उपयोग कर रहा हूं, मैं रूट में हूं, GitHub रिपॉजिटरी मौजूद है और मुझे नहीं पता कि अब क्या करना है।

> git push -u origin master
Permission denied (publickey).
fatal: Could not read from remote repository.

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


2
इसी तरह के सवाल: stackoverflow.com/questions/16074832/…
JMoran

1
.Sh और authoirzed कुंजियों के साथ अनुमति समस्याएँ हो सकती हैं। Ssh बहुत सख्त है, इसे गूगल करें।
कार्ल मॉरिसन


जैसे @bdukes का उत्तर यहां https का उपयोग कर कमांड है और यह काम करेगा, विंडोज उदाहरण: "PS C: \ xampp \ htdocs> git क्लोन github.com/algolia/instant-search-demit.it "
डंग

जवाबों:


663

GitHub आपको प्रमाणित करने में सक्षम नहीं है। इसलिए, या तो आप SSH कुंजी के साथ सेटअप नहीं कर रहे हैं, क्योंकि आपने अपनी मशीन पर एक सेट नहीं किया है , या आपकी कुंजी आपके GitHub खाते से संबद्ध नहीं है।

SSH कुंजियों से निपटने के लिए आप SSH / git URL के बजाय HTTPS URL का उपयोग कर सकते हैं। यह GitHub की अनुशंसित विधि है

इसके अलावा, GitHub के पास विशेष रूप से उस त्रुटि संदेश के लिए एक सहायता पृष्ठ है , और आप जो कुछ भी देख सकते हैं, उसके बारे में अधिक विस्तार से बताते हैं।


53
यह त्रुटि GitHub के लिए अनन्य नहीं है। मैं BitBucket के साथ एक ही त्रुटि प्राप्त कर रहा हूं, और मैं अपने सिर को खरोंच रहा हूं कि इसे कैसे हल किया जाए ...
इगोरगानपोलस्की

32
मदद करने के भाग का उपयोग कर रहा है ssh -vT git@github.comसे Github मदद पृष्ठ मदद डिबग करने के लिए क्या कुंजी अपने रेपो उपयोग कर रहा है। मेरा सुझाव है कि आप इसे अपने उत्तर में जोड़ें।
मैक्सिमेर्नार्ड

25
SSL के बजाय HTTPS का उपयोग करने का उत्थान थोड़ा निराशाजनक है। SSH कहीं अधिक सुविधाजनक है। ऊपर @MaximeBernard के सुझाव ने मेरे लिए इस मुद्दे को हल कर दिया: GIT .ssh निर्देशिका के लिए सही जगह नहीं देख रहा था। उपयोग ssh -vT git@github.comकरने से यह जानकारी मिलती है कि यह काम क्यों नहीं कर रहा है।
क्रिस्टोफ

1
ऊपर मेरी टिप्पणी के अनुसार, एक तीसरा विकल्प यह है कि कमांड को ssh कीज़ के साथ एक के अलावा किसी अन्य खाते से भेजा जा रहा है (जैसे रूट पर चल रहा है)।
डेविड लेबॉउर

1
जैसा कि @ theapache64 ने उल्लेख किया है: यदि आप मैक पर हैं और पहले से ही एक ssh कुंजी "ssh-add" उत्पन्न कर चुके हैं तो वास्तव में आप गायब हो सकते हैं। मेरे लिए काम किया।
डिजिटल इम्पेन्सेंस

78

क्या आपने अपनी ~ .ssh निर्देशिका में एक कॉन्फिगर फाइल बनाई थी ? इसमें इस तरह की सामग्री होनी चाहिए:

Host github.com 
 IdentityFile ~/.ssh/github_rsa

यह मानते हुए कि आपने gshub_rsa नाम की एक ssh कुंजी बनाई है

और इसे GitHub पर अपलोड किया ...

नोट: यदि आपके 1/2 / .shsh / निर्देशिका में 1 से अधिक कुंजी (2 और अधिक) हैं, तो आपको स्पष्ट कॉन्फ़िगरेशन के इस तरीके का पालन करना चाहिए। यदि आप इस तरह से कुंजी निर्दिष्ट नहीं करते हैं, तो पहले क्रम में कुंजी ली जाती है और इसका उपयोग जीथब प्रमाणीकरण के लिए किया जाता है, इसलिए यह कुंजी फ़ाइल नाम पर निर्भर करता है।


1
मैंने ssh-key उत्पन्न किया था और काफी समय तक, बिना किसी समस्या के, अच्छी तरह से काम करने में सक्षम था। एक बढ़िया दिन (शायद पुनः आरंभ करने के बाद), इसने काम करना बंद कर दिया, जबकि कुंजी जीथब और मेरे स्थानीय सिस्टम पर बरकरार थी। मैंने "कॉन्फ़िग फ़ाइल" जोड़ी, जिसमें की-मैप्ड-टू-डोमेन निर्दिष्ट किया गया। ऊपर दिए गए विवरण igor-ganapolsky-answer में दिए गए हैं। यह बढ़िया काम करता है !
पारस

3
यह वास्तव में मेरी समस्या हल करता है! बहुत धन्यवाद! लेकिन मेरे पास एक प्रश्न है। अपने तरीके का उपयोग करने से पहले, ssh -T git@github.comसही तरीके से प्रतिक्रिया, जबकि git push -u origin masterप्रश्न में भी वही त्रुटि है। क्यों मैं इसे सही ढंग से कनेक्ट कर सकता हूं, लेकिन इसे धक्का नहीं दे सकता या इसे प्राप्त नहीं कर सकता हूं?
ईडन हार्डर

@EdenHarder मैं उसी मुद्दे का सामना कर रहा हूं। क्या आपको इसका जवाब मिला?
वेर्द्धी भट

64

मुझे इस समस्या के बारे में पता है। Ssh कुंजी जोड़ने के बाद, आप ssh एजेंट को ssh एजेंट भी जोड़ें (आधिकारिक डॉक्स से )

ssh-agent -s
ssh-add ~/.ssh/id_rsa

यह सब ठीक होने के बाद, git उचित कुंजी देख सकता है, पहले नहीं।


5
प्रधान! मेरे MacOS X पर काम किया
stillatmylinux

9
आपके प्रमाणीकरण एजेंट के लिए कनेक्शन नहीं खोला जा सका।
मोना जलाल

इसे चलाने की कोशिश करें: evalssh-agent -s
विंसेंट acent

@ मोनाजाल का उपयोगssh-add ~/.ssh/github_rsa
अनिर्बान नाग 'टिनटिनम'

उत्तम। यह काम कर रहा है। धन्यवाद। 👌
Erkam KUCET

62

आपको SSH कुंजी (यदि आपके पास एक नहीं है) जनरेट करने और सार्वजनिक कुंजी को अपने Github खाते से संबद्ध करने की आवश्यकता है। गितुब का स्वयं का प्रलेखन देखें ।


2
इसके लिए धन्यवाद ... मुझे GitHub से उत्पन्न SSH कुंजी मिली। अब टर्मिनल में दोनों को जोड़ने के लिए किस कमांड का उपयोग किया जाता है? धन्यवाद!
२३

2
उसके लिए कोई टर्मिनल कमांड नहीं है। दस्तावेज़ में चरण 4 देखें जिसे मैंने अपने उत्तर में जोड़ा था।
cdhowie

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

@PabitraDash नंबर HTTPS SSH कुंजियों का उपयोग नहीं करता है।
cdhowie

51

मेरे साथ ऐसा हुआ। किसी कारण से मेरे मूल को बिना मेरी पहचान के गड़बड़ कर दिया गया:

जांचें कि क्या आपकी सेटिंग्स अभी भी सही हैं

git remote -v

url को ssh की तरह कुछ होने की आवश्यकता है: //git@github.com/YourDirectory/YourProject.git; यदि आप git@github.com नहीं देखते हैं, तो उपयोग करें

git remote set-url origin git://github.com/YourDirectory/YourProject.git

इसे सही करने के लिए। या आप अपने विशेष रिपॉजिटरी के सेटिंग पैनल में प्राथमिक रिमोट रिपॉजिटरी यूआरएल को जांचने और सेट करने के लिए जीथब ऐप का उपयोग कर सकते हैं।


9
उरोजों से सावधान रहें। वे https और ssh और इस पृष्ठ पर पोस्ट के बीच अंतर करते हैं, यह स्पष्ट नहीं करता है। प्रत्येक git प्रोजेक्ट में प्रोजेक्ट रूट डायरेक्टरी में .it / config फाइल होती है। वहां आप दूरस्थ और शाखा जानकारी सेट कर सकते हैं। Https के लिए रिमोट सेट करना: url = github.com/<yourGitUserName>/<yourGitProject>.it जबकि git + ssh: url = git@github.com के लिए: <yourGitSserName> / <yourGitProject> .ग्लिट ​​गलत यूआरएल होने के कारण। सार्वजनिक-कुंजी की अनुमति ने त्रुटि को अस्वीकार कर दिया है जो संभवतः बहुत स्पष्ट त्रुटि नहीं है।
darKoram

Git दूरदराज के सेट यूआरएल मूल: फाइनल में मेरे मामले के लिए सिर्फ आंशिक रूप से काम करता है github.com/your_directory/your_project.git
रालोद

19

मान लें कि आप GHHub को SSH से जोड़ रहे हैं, तो आप इसकी पुष्टि करने के लिए कमांड से नीचे चल सकते हैं।

$git config --get remote.origin.url

यदि आपको कोई परिणाम मिलता है, तो निम्न प्रारूप git@github.com: xxx / xxx.github.com.git है, तो आपको निम्न कार्य करना चाहिए।

SSH कुंजी उत्पन्न करें (या मौजूदा एक का उपयोग करें)। यदि आपके पास एक था, तो आपको बस अपनी कुंजी को ssh-Agent (चरण 2) और अपने GitHub खाते (चरण 3) में जोड़ने की आवश्यकता है।

नीचे उन लोगों के लिए है जिनके पास SSH कुंजी नहीं है।

चरण 1 सार्वजनिक / निजी rsa कुंजी जोड़ी उत्पन्न करना।

$ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

आपको यह पुष्टि करने के लिए कहा जाएगा कि SSH कुंजी को कहाँ सहेजना है और आप किस पासफ़्रेज़ का उपयोग करना चाहते हैं।

चरण 2 अपनी कुंजी ssh-Agent में जोड़ें

  • सुनिश्चित करें कि ssh- एजेंट सक्षम है

    $eval "$(ssh-agent -s)"

  • Ssh- एजेंट में अपनी SSH कुंजी जोड़ें:

    $ssh-add ~/.ssh/id_rsa

चरण 3 अपने खाते में अपनी SSH कुंजी जोड़ें

$sudo apt-get install xclip

$xclip -sel clip < ~/.ssh/id_rsa.pub

फिर कॉपी की हुई कुंजी को GitHub में जोड़ें

सेटिंग्स पर जाएं -> एसएसएच कुंजी (व्यक्तिगत सेटिंग्स साइड बार) -> एसएसएच कुंजी जोड़ें -> फॉर्म भरें (कुंजी आपके क्लिपबोर्ड पर है, बस ctrl + v का उपयोग करें) -> कुंजी जोड़ें

उपरोक्त चरणों से गुजरने के बाद, आपको अनुमति समस्या को हल करना चाहिए।

संदर्भ लिंक: एसएसएच कुंजी उत्पन्न करना


इस समाधान ने ubuntu, $ ssh-add /root/.ssh/id_rsa
Feras

इसने मेरे उत्साह पर भी एक अजीब सा विवाद सुलझा दिया, एक संशोधन जो मैं सुझाता हूं वह है कि यह निर्भरता से बचने के लिए है, बस उपयोग करेंcat ~/.ssh/id_rsa.pub
Pogrindis

19

सबसे पहले, हमें आपके कंप्यूटर पर मौजूदा ssh कुंजियों की जांच करनी होगी। टर्मिनल खोलें और चलाएं:

ls -al ~/.ssh

#or

cd ~/.ssh
ls

और जो आपके .ssh निर्देशिका में फ़ाइलों को सूचीबद्ध करेगा

और अंत में आप जो देखते हैं, उसके आधार पर (मेरे मामले में) था:

 github_rsa  github_rsa.pub known_hosts

बस अपने आरएसए को स्थापित करने का प्रयास करें और उम्मीद है कि आपके "गिट पुश मूल" मुद्दों को हल करेंगे

$ ssh-keygen -lf ~/.ssh/github_rsa.pub

नोट: आरएसए प्रमाणपत्र कुंजी-युग्मित हैं, इसलिए आपके पास एक निजी और सार्वजनिक प्रमाणपत्र होगा, निजी आपके लिए सुलभ नहीं होगा क्योंकि यह जीथब (इस मामले में) से संबंधित है, लेकिन जनता वह है जिसे आप याद कर रहे हैं जब यह त्रुटि होती है (कम से कम जो मेरा मामला था, मेरा गितुब खाता या रेपो किसी तरह गड़बड़ हो गया और मुझे सार्वजनिक कुंजी को "लिंक" करना पड़ा, पहले से उत्पन्न)


क्या मुझे SHAइस कमांड से आउटपुट को कॉपी करना है ?
इगोरगानापल्स्की

नहीं, सिर्फ "ssh-keygen -lf ~ / .ssh / <your_GITHUB_RSA_FILE.pub>"
निष्पादित करें

इसलिए मैंने एक कमांड भी संलग्न किया है कि "आपके .ssh डाइरेक्टरी में फाइलों को सूचीबद्ध करता है" ... ताकि जिस तरह से आपको पता चले कि किस फाइल से आपकी कुंजी (ssh-keygen) निकाली जाए। याद रखें कि आरएसए प्रमाणपत्र कुंजी-युग्मित होते हैं, इसलिए आपके पास एक निजी और सार्वजनिक प्रमाणपत्र होगा, निजी आपके लिए सुलभ नहीं होगा क्योंकि यह जीथब (इस मामले में) से संबंधित है, लेकिन जनता वह है जिसे आप याद कर रहे हैं जब यह त्रुटि होती है ( कम से कम यही मेरा मामला था, मेरा गितुब खाता या रेपो किसी तरह गड़बड़ हो गया और मुझे सार्वजनिक कुंजी को पहले "लिंक" करना पड़ा, फिर से)
d1jhoni1b

$ ssh-keygen -lf ~ / .ssh / github_rsa.pub /home/mona/.ssh/github_rsa.pub: ऐसी कोई फ़ाइल या निर्देशिका नहीं
मोना जलाल

"ऐसी कोई फ़ाइल या निर्देशिका नहीं" का अर्थ है कि आपके पास उस फ़ाइल का नाम या पथ नहीं है ... जब आप ls -al ~ / .ssh निष्पादित करते हैं तो आपको क्या मिलता है?
d1jhoni1b

14

मुझे यह त्रुटि मिल रही थी। पता चलता है कि मैंने बस OSX को सिएरा में अपग्रेड किया था और मेरी पुरानी कुंजी अब पंजीकृत नहीं थी।

पहले मैंने सोचा था कि "मैकओएस सिएरा को अपग्रेड करने से आपकी एसएसएच कुंजी टूट जाएगी और आपको अपने खुद के सर्वर से बाहर कर दिया जाएगा"

लेकिन मैंने उस एक को दरकिनार कर दिया था। पता चलता है कि मुझे अपनी मौजूदा कुंजी को फिर से पंजीकृत करना पड़ा:

ssh-add -K

और पासफ़्रेज़ टाइप करें ... किया!


2
एक ही मुद्दा, मेरे लिए काम किया: `ssh-add -K ~ / .sh /
id_rsa`

11

एक और समाधान :

SSH कुंजियाँ बनाएँ, टाइप करें ssh-keygen -t rsa -C "your_email@example.com"। इससे id_rsa और id_rsa.pub दोनों फाइलें बन जाएंगी।

Id_rsa को ssh सूची में स्थानीय कंप्यूटर पर जोड़ें: ssh-add ~/.ssh/id_rsa.

कुंजियाँ बनाने के बाद प्यूब का उपयोग करें:

cat ~/.ssh/id_rsa.pub 

आपको कुछ ऐसा मिलेगा:

cat ~/.ssh/id_rsa.pub 

ssh-rsa AAAB3NzaC1yc2EAAAADAQABAAACAQCvMzmFEUPvaA1AFEBH6zGIF3N6pVE2SJv9V1MHgEwk4C7xovdk7Lr4LDoqEcqxgeJftwWQWWVrWWf7q9qCdHTAanH2Q5vx5nZjLB+B7saksehVOPWDR/MOSpVcr5bwIjf8dc8u5S8h24uBlguGkX+4lFJ+zwhiuwJlhykMvs5py1gD2hy+hvOs1Y17JPWhVVesGV3tlmtbfVolEiv9KShgkk3Hq56fyl+QmPzX1jya4TIC3k55FTzwRWBd+IpblbrGlrIBS6hvpHQpgUs47nSHLEHTn0Xmn6Q== user@email.com

इस कुंजी (मान) को कॉपी करें और github.com पर जाएं और सेटिंग (ssh और pgp कुंजी) के नीचे अपनी सार्वजनिक कुंजी जोड़ें।


10

मामले में आप अपने स्वयं के भंडार तक नहीं पहुंच रहे हैं, या क्लोन रिपॉजिटरी के अंदर क्लोनिंग कर रहे हैं (कुछ "गिट सबमॉड्यूल ..." कमांड) का उपयोग कर रहे हैं:

आपके रिपॉजिटरी के होम डायरेक्टरी में:

$ ls -a

1. ".itmodules" खोलें, और आपको कुछ इस तरह मिलेगा:

[submodule "XXX"]
    path = XXX
    url = git@github.com:YYY/XXX.git

अंतिम पंक्ति को उस रिपॉजिटरी के HTTPS होने के लिए बदलें जिसे आपको खींचने की आवश्यकता है:

[submodule "XXX"]
    path = XXX
    https://github.com/YYY/XXX.git

सहेजें ".gitmodules" , और चलाने के submodules के लिए आदेश, और ".git" अद्यतन किया जाएगा।

2. ".it" खोलें, "कॉन्फ़िगर" फ़ाइल पर जाएं, और आपको कुछ इस तरह मिलेगा:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://github.com/YYY/XXX.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[submodule "XXX"]
    url = git@github.com:YYY/XXX.git

अंतिम पंक्ति को उस रिपॉजिटरी के HTTPS होने के लिए बदलें जिसे आपको खींचने की आवश्यकता है:

    url = https://github.com/YYY/XXX.git

तो, इस मामले में, मुख्य समस्या केवल यूआरएल के साथ है। किसी भी भंडार का HTTPS अब रिपॉजिटरी पेज के शीर्ष पर पाया जा सकता है।


9

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

1- सभी मूलों को हटा दें

git remote rm origin  

(cf. https://www.kernel.org/pub/software/scm/git/docs/git-remote.html )

* रिमोट: "रिपॉजिटरी के सेट (" रीमोट्स ") को प्रबंधित करें जिनकी शाखाएं आप ट्रैक करते हैं।

* आरएम: "नामित रिमोट को हटा दें। रिमोट के लिए सभी रिमोट-ट्रैकिंग शाखाएं और कॉन्फ़िगरेशन सेटिंग्स हटा दी जाती हैं।"

2- सभी को हटा दिया गया है:

git remote -v  

3- नए मूल गुरु जोड़ें

git remote add origin git@github.com:YOUR-GIT/YOUR-REPO.git

बस आज के लिए इतना ही!


1
यह मददगार था। इन आदेशों की वजह से यह मुझे गितुब यूजरनेम और अकाउंट पासवर्ड के लिए पूछना शुरू कर देता है, उसके बाद मैं आसानी से टर्मिनल में टाइप करके github लिंक पर पुश कर सकता हूं: git push -u original master
Noha Salah

8

सुनिश्चित करें कि ssh-add -lSSH कुंजी का एक फिंगरप्रिंट दिखाता है जो आपके Github खाते में SSH कुंजी की सूची में मौजूद है।

यदि आउटपुट खाली है, लेकिन आप जानते हैं कि आपके पास एक निजी SSH कुंजी है जो आपके github खाते के साथ काम करती है, तो ssh-addइस पर चलाएं (पाया गया ~/.ssh। यह id_rsaडिफ़ॉल्ट रूप से नाम दिया गया है, इसलिए आप संभवतः चलाएंगे ssh-add id_rsa)।

वरना, SSH कुंजी युग्म बनाने के लिए इन निर्देशों का पालन करें ।


8

मैं अपने php प्रोजेक्ट के लिए पहले github का उपयोग कर रहा था। जीथब का उपयोग करते समय, मैं https के बजाय ssh का उपयोग कर रहा था। मेरे पास मेरी मशीन उसी तरह सेट थी और हर बार जब मैं कोड को कमिट करता था और धक्का देता था, तो वह मुझसे मेरा आरएएसए पासवर्ड पूछती थी।

कुछ दिनों के बाद, मैंने php प्रोजेक्ट पर काम करना बंद कर दिया और अपना rsa पासवर्ड भूल गया। हाल ही में, मैंने एक जावा प्रोजेक्ट पर काम करना शुरू किया और बिटकॉइन में चला गया। चूंकि, मैं पासवर्ड भूल गया था और इसे ठीक करने का कोई तरीका नहीं है जो मुझे लगता है कि, मैंने नए प्रोजेक्ट के लिए https (अनुशंसित) प्रोटोकॉल का उपयोग करने का निर्णय लिया और प्रश्न में वही त्रुटि प्राप्त की।

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

  1. मेरे कमांड को ssh के बजाय https का उपयोग करने के लिए बताने के लिए इस कमांड को रन करें:

    git config --global url."https://".insteadOf git://
    
  2. यदि कोई हो तो रिमोट निकालें

    git remote rm origin
    
  3. Git init से git push करने के लिए सब कुछ फिर से करें और यह काम करता है!

पुनश्च: मैंने डिबग प्रक्रिया के दौरान अपनी मशीन से ssh को भी अन-इंस्टॉल किया, यह सोचकर कि, इसे हटाने से समस्या ठीक हो जाएगी। हाँ मैं जानता हूँ!! :)


मुझे नहीं लगता कि यह लोगों को https की ओर इंगित करने के लिए एक अच्छा विचार है, जब ssh को भी काम करना है। इसके अलावा, यह एक कॉर्पोरेट प्रॉक्सी के पीछे के लोगों के लिए काम करने की संभावना नहीं है।
इगोर स्टॉप्टा

8

दूरस्थ रिपॉजिटरी में https एक्सेस के लिए ssh एक्सेस को बदलने पर समस्या हल हो गई:

git remote set-url origin https_link_to_repository

git push -u origin master

5

मुझे लगता है कि मेरे पास आपके लिए सबसे अच्छा जवाब है, आपके गिट ऐप्स ने रूट यूजर डायरेक्टरी में अपना id_rsa.pub पढ़ा

/home/root/.ssh/id_rsa.pub

इसीलिए /home/your_username/.ssh/id_rsa.pub में आपकी कुंजी को git के साथ नहीं पढ़ा जा सकता है। इसलिए आपको /home/root/.ssh/ में कुंजी बनाने की आवश्यकता है

$ sudo su
$ ssh-keygen
$ cd ~/.ssh
$ cat id_rsa.pub

फिर कुंजी को अपने github खाते में कॉपी करें। यह मेरे लिए काम किया है। आप इसे आज़मा सकते हैं।


यह मुझे उस उत्तर के लिए जाने देता है जिसकी मुझे तलाश थी। मैं आदत से सूडो के साथ भाग गया था, इसलिए यह गलत साख की तलाश में था। सूद लिया और मेरा क्लोन ठीक चला।
ताकेहं

4

यदि आपने पहले ही SSH कुंजी बना ली है और अभी भी त्रुटि हो रही है, क्योंकि आपको उस उपयोगकर्ता को पढ़ने और लिखने की अनुमति देने की आवश्यकता है जिसे आप उस फ़ोल्डर में लिख रहे हैं जिसमें आप क्लोनिंग कर रहे हैं। ऐसा करने के लिए sudo chmod 777 <your_folder_name_here>"। बेशक, यह आपके द्वारा SSH कुंजी उत्पन्न करने के बाद है और आपको अभी भी यह त्रुटि मिल रही है। आशा है कि यह भविष्य के उपयोगकर्ताओं की मदद करता है।

संपादित करें

यदि आप git bash का उपयोग कर रहे हैं तो Windows में इस उपयोग व्यवस्थापक को जोड़ने के लिए


इस। यह समस्या का कारण भी बन सकता है।
केविनो

1
यह मेरी समस्या थी, लेकिन मैं किसी फ़ोल्डर पर 777 अनुमतियाँ सेट करने की अनुशंसा नहीं करूंगा। मेरे मामले में फ़ोल्डर रूट उपयोगकर्ता के स्वामित्व में था, और मुझे इसे अपने गैर-रूट उपयोगकर्ता खाते तक पहुंच देने की आवश्यकता थी। मैंने ऐसा किया:sudo chown -R $USER:$USER <your_folder_name_here>
डेविड

@ डेविड, मैं भी यही सलाह देता हूं। 777 सुंदर हैकी है और सुरक्षित नहीं है।
केविन

3

मेरा हाल ही में यही मुद्दा था। यदि आपको तुरंत ठीक करने की आवश्यकता है, तो यह मदद कर सकता है, लेकिन हर बार जब आप अपने सिस्टम को फिर से शुरू करते हैं तो यह करने की आवश्यकता होती है

टर्मिनल से, भागो: ssh-add ~/.ssh/id_rsa

अपना सिस्टम पासवर्ड डालें और उसे काम करना चाहिए।


3

मैं अपने कुछ निष्कर्ष जोड़ना चाहूंगा:

यदि आप उपयोग कर रहे हैं GitBash, तो सुनिश्चित करें कि SSH कुंजी संग्रहीत है ~/.ssh/id_rsa

डिफ़ॉल्ट GitBashखोज के द्वारा ~/.ssh/id_rsaSSH कुंजी के लिए डिफ़ॉल्ट पथ के रूप में।

यहां तक ​​कि फ़ाइल नाम id_rsaमायने रखता है। यदि आप अपनी SSH कुंजी को किसी अन्य फ़ाइलनाम या पथ में सहेजते हैं, तो यह Permission Denied(publickey)त्रुटि को फेंक देगा ।


3

ठीक है इस एक के लिए कुछ समाधान हैं, उनमें से कुछ पहले से ही उल्लेख किया गया है, लेकिन बस उन्हें एक साथ रखने के लिए:

  • सुनिश्चित करें कि आप कुंजियाँ मौजूद हैं, डिफ़ॉल्ट रूप से एक और ~ / .sh / फ़ोल्डर, अर्थात् id.rsa और id.rsa.pub

  • सुनिश्चित करें कि कुंजियों की सही अनुमति है, आप chmod चला सकते हैं:

    chmod 600 ~ / .ssh / id_rsa

    chmod 644 ~ /। ssh / id_rsa.pub

  • सुनिश्चित करें कि आप की सामग्री सार्वजनिक कुंजी (id_rsa.pub) दूरस्थ रिपॉजिटरी कॉन्फ़िगरेशन में अपलोड किए गए एक से मेल खाती है

  • अंत में ssh एजेंट के साथ समस्याओं को ठीक करें: ssh-add

कुछ और जानकारी: https://itcodehub.blogspot.com/2015/01/ssh-add-problems-with-ssh-agent-and.html


मैंने FAT32 के रूप में स्वरूपित USB ड्राइव का उपयोग करके अपनी ssh कुंजी को एक कंप्यूटर से दूसरे कंप्यूटर में कॉपी किया था। इसने फाइलों की अनुमति बदल दी। उबंटू पर, मुझे जरूरत पड़ने पर स्वचालित रूप से SSH पासवर्ड के लिए कहा जा रहा है, लेकिन जब तक chmodआप वर्णन नहीं करते, तब तक चुपचाप नहीं हुआ । धन्यवाद।
लिडेल

1

यदि आप Mac UI के लिए GitHub का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आप लॉग इन हैं, प्राथमिकताएं जांचें।


1

मुझे 'गिट पुश' के दौरान एक ही त्रुटि मिल रही थी। ग्राहक पक्ष में मेरे दो मूल और गुरु थे। मैंने एक को हटा दिया, तो यह ठीक काम किया।


1

लॉगिन करने के लिए आप Https url का उपयोग कर सकते हैं

मुझे लगता है कि आप ssh url के साथ लॉगिन करने की कोशिश कर रहे हैं जब आप कहते हैं कि अगर यह केवल पासवर्ड के रूप में पूछ रहा है, तो आप इसे धक्का दे सकते हैं।


1

उबंटू में भी, हालांकि बिटबकेट में सेटिंग्स में पहले से ही एसएसएच कुंजी दर्ज थी, मुझे यह समस्या मिली। कारण यह था, मैं निम्नलिखित कोशिश कर रहा था:

sudo git push origin master

निश्चित नहीं कि क्यों, लेकिन इसका उपयोग करके हल हो गया

git push origin master

कोई सूदो इस्तेमाल नहीं किया।


1

मेरे लिए मैंने यह कोशिश की -

eval "$(ssh-agent -s)"

फिर मैं दौड़ता हूं

ssh-add ~/.ssh/path-to-the-keyfile

और कुंजी को चलाने के लिए आप चला सकते हैं

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

यह कुंजी (सार्वजनिक और निजी) की जोड़ी उत्पन्न करेगा।

आप अधिक पढ़ने के लिए इस कुंजी को स्टोर कर सकते हैं इसे पढ़ने के लिए अपने GitHub खाते में एक नई SSH कुंजी जोड़ें

मुझे आशा है कि यह दूसरों की मदद करेगा :)


1

मुझे @Batman को इसी तरह की समस्या हो रही थी। हालाँकि, क्योंकि मैं इसे / usr / local / src / projectname के तहत चला रहा था, बिना sudo के चलाना कोई विकल्प नहीं था।

बस पर्यावरण (अपने ~ / .ssh / पथ) preseve करने के लिए ई ध्वज जोड़ें ।

$ sudo -E git clone git@your_repo

आदमी से सूदो:

-E, - -vrerve-env सुरक्षा नीति को इंगित करता है कि उपयोगकर्ता अपने मौजूदा पर्यावरण चर की सेवा करना चाहता है। यदि उपयोगकर्ता के पास पर्यावरण को संरक्षित करने के लिए उपयोगकर्ता के पास अनुमति नहीं है तो सुरक्षा नीति में कोई त्रुटि हो सकती है।


1

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

git remote add origin git@github.com:<user>/<project>.git

अपने खाते से संबंधित मूल्यों के साथ <> में क्या है बदलें।

.gitप्रत्यय को हटाने का उपाय है । रिमोट को इस प्रकार जोड़ें:

git remote add origin git@github.com:<user>/<project>


1

tl; डॉ

में ~/.ssh/configडाल

PubkeyAcceptedKeyTypes=+ssh-dss

परिदृश्य यदि आप ओपनएसएसएच> 7 के संस्करण का उपयोग कर रहे हैं, जैसे कि टचबार मैकबुक प्रो पर यह कहा जाता हैssh -V
OpenSSH_7.4p1, LibreSSL 2.5.0

आपके पास एक पुराना मैक भी था जिसमें मूल रूप से आपकी कुंजी थी जिसे आपने गितुब पर रखा था, यह संभव है कि एक id_dsa कुंजी का उपयोग कर रहा हो। OpenSSH v7 इन डीएसए कुंजियों के उपयोग को डिफ़ॉल्ट रूप से नहीं रखता है (जिसमें यह शामिल है ssh-dss), लेकिन आप अभी भी इसे निम्नलिखित कोड को अपने में डालकर वापस जोड़ सकते हैं~/.ssh/config

PubkeyAcceptedKeyTypes=+ssh-dss

मेरे लिए काम करने वाला स्रोत यह जेंटू समाचार पत्र है

अब आप कम से कम GitHub का उपयोग कर सकते हैं और फिर अपनी कुंजियों को RSA में ठीक कर सकते हैं।


1

git pullदूरस्थ होस्ट पर उपयोग कर एक समान त्रुटि संदेश के समाधान की खोज करते हुए मुझे यह पृष्ठ मिला :

$ git pull
Permission denied (publickey).
fatal: Could not read from remote repository.

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

मैं अपनी स्थानीय मशीन से रिमोट होस्ट से जुड़ा था ssh -AY remote_hostname। यह ओपी के सवाल का हल नहीं है, लेकिन इस पृष्ठ पर आने वाले अन्य लोगों के लिए उपयोगी है, इसलिए इसे यहां पोस्ट करें।

ध्यान दें कि मेरे मामले में, git pullमेरी स्थानीय मशीन पर ठीक काम करता है (यानी, ssh कुंजी सेट की गई थी, और GitHub खाते में जोड़ा गया था, आदि)। मैंने ~/.ssh/configअपने लैपटॉप पर इसे जोड़कर अपनी समस्या हल की :

Host *
     ForwardAgent yes

मैंने तब रिमोट होस्ट के साथ फिर से जुड़ा ssh -AY remote_hostname, और git pullअब काम किया। कॉन्फ़िगरेशन में परिवर्तन मेरे ssh कीपियर को मेरे स्थानीय मशीन से किसी भी होस्ट पर अग्रेषित करने में सक्षम बनाता है। -Aकरने के लिए विकल्प sshहै कि ssh सत्र में वास्तव में आगे यह। अधिक विवरण यहां देखें।


0

हो सकता है कि आपका ssh- एजेंट सक्षम न हो आप इसे आज़मा सकते हैं

  1. Git डाउनलोड करें

http://git-scm.com/

  1. इसे स्थापित करो

  2. Ssh- एजेंट सक्षम करें

C: \ Program Files \ Git \ cmd

स्टार्ट-ssh-एजेंट


0

अपने GitHub खाते के डैशबोर्ड पर जाएं, अपना प्रोजेक्ट रिपॉजिटरी खोजें, सेटिंग्स टैब पर क्लिक करें - परिनियोजन कुंजी के तहत आपको अपनी SSH कुंजी जोड़ना होगा। टर्मिनल खोलें और टाइप करें:

cat ~/.ssh/id_rsa.pub | pbcopy 

यह आपकी id_rsa.pub फ़ाइल से कुंजी को कॉपी करेगा। तो बस वापस GitHub डैशबोर्ड पर जाएं, इसे पेस्ट करें, Add Key पर क्लिक करें और यही है।

यही उपाय बिटकॉइन खातों पर लागू होता है।

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