SSH कुंजी - फिर भी पासवर्ड और पासफ़्रेज़ के लिए पूछ रहा है


494

जब मैं एक रिपॉजिटरी को क्लोन करता हूं, तो मैं कुछ हद तक अपने यूजरनेम और पासवर्ड के लिए पूछ रहा हूं। मैं इस चरण को बायपास करना चाहता हूं क्योंकि यह मेरे वर्कफ़्लो के भीतर एक झुंझलाहट है।

मैंने इस गाइड का उपयोग करके SSH कुंजी (जो मैंने सफलतापूर्वक किया था) स्थापित करने की कोशिश की। https://help.github.com/articles/generating-ssh-keys और मैं सफल रहा।

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

मैं थोड़ा अनिश्चित हूं कि मुझे क्या पूछना है, इसलिए मैं सिर्फ अपना लक्ष्य बताऊंगा।

मैं हर समय अपने Github जानकारी में डाले बिना रिपॉजिटरी को क्लोन करने में सक्षम होना चाहता हूं

मुझे अपने SSH कुंजी के साथ क्या याद आ रही है? अगर कोई मुझे कुछ मार्गदर्शन या संसाधन प्रदान कर सकता है, तो मैं इसकी सराहना करूंगा, क्योंकि मैंने हमेशा कुछ खोया हुआ महसूस किया है जब यह GHHub में SSH प्रमाणीकरण के लिए आया था।

मेरी जानकारी से, यह एक कमांड है जो परीक्षण करता है कि क्या चीजें ठीक से काम कर रही हैं, यहां मेरे कंसोल से आउटपुट हैं:

~ $ ssh -T git@github.com
Saving password to keychain failed
Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa':
Hi MYNAME! You've successfully authenticated, but GitHub does not provide shell access.

जब मैं अपना पासवर्ड इनपुट करता हूं, तो क्या पहले असफल होना चाहिए? फिर, जब मैं अपना पासफ़्रेज़ दर्ज करता हूं, तो यह गुजरता है।


1
आप किस ओएस में हैं? एक आधुनिक लिनक्स डेस्कटॉप एक कुंजी प्रबंधक में आपके पासफ़्रेज़ को संग्रहीत करने का प्रस्ताव करेगा। मैक ओएस एक्स में समान। विंडोज में आप उपयोग कर सकते हैं pageant, जिसका हिस्सा है putty। इन सभी में लक्ष्य समान है: आप अपने पीसी को शुरू करने के बाद केवल एक बार पासफ़्रेज़ दर्ज करते हैं, मुख्य प्रबंधक एजेंट इसे बाद के उपयोगों में ssh करने के लिए पास करेंगे जब तक आप रिबूट नहीं करते।
जानोस


2
मुझे यहाँ पार्टी में थोड़ी देर हो गई है, लेकिन जीथब में छोटे क्लोन टैब / बटन पर एक लिंक है जो कहता है कि "यूथ एसयूवी का उपयोग करें"। आप ऐसा करना चाहते हैं। यह आपके क्लोन लिंक को "git @ github: यूज़रनेम / प्रोजेक्ट.जीट" जैसी किसी चीज़ में बदलता है। यदि आपने github में SSH कुंजी जोड़ी है और यह ssh-Agent पर स्थानीय रूप से चल रही है, तो आपको उपयोगकर्ता नाम या पासवर्ड डाले बिना पुश करने में सक्षम होना चाहिए।
लोगन किचन

जवाबों:


201

यदि आप HTTPsयूआरएल के साथ काम करते हैं , तो यह हमेशा आपके उपयोगकर्ता नाम / पासवर्ड के लिए पूछेगा।

यदि SSHक्लोनिंग / सेटिंग को रीमोट करते समय आप सही तरीके से उपयोग कर रहे हैं । फिर सुनिश्चित करें कि आपके पास अपना पासवर्ड याद रखने के लिए ssh-agent है। इस तरह, आप केवल एक बार टर्मिनल सत्र द्वारा अपना पासफ़्रेज़ दर्ज करेंगे।

यदि यह अभी भी बहुत कष्टप्रद है, तो बस पासफ़्रेज़ के बिना एक ssh-key सेट करें।


2
जवाब देने के लिए धन्यवाद। मैंने हमेशा केवल HTTP का उपयोग किया है। मैं SSH प्रमाणीकरण प्राप्त करने की कोशिश कर रहा हूं और मुझे लगा कि मैंने इसे स्थापित किया है। Ssh- एजेंट git के बाहर कुछ है जिसे मुझे स्थापित करने की आवश्यकता है? धन्यवाद
HelloWorld

1
@ R11G आप नहीं कर सकते हैं, अन्यथा पासवर्ड सुरक्षित नहीं होंगे ... बस एक नया पुनर्जनन करें।
साइमन बौड्रीस

50
मैं केवल यह नोट करना चाहता हूं कि पासफ़्रेज़ का उपयोग आपकी निजी कुंजी को एन्क्रिप्ट करने के लिए किया जाता है, इसलिए यदि आप पासफ़्रेज़ का उपयोग नहीं करते हैं, तो आपकी निजी कुंजी आपकी मशीन पर अनएन्क्रिप्टेड हो जाएगी। यह आपके कंप्यूटर पर एक पाठ फ़ाइल में एक पासवर्ड छोड़ने जैसा है।

2
मजेदार, मेरे HTTPS रिपोज कभी पासवर्ड नहीं मांगते और मेरे SSH रिपोज हमेशा करते हैं।
एडम

33
दूरस्थ के URL को https से ssh में बदलने के लिए इस github डॉक को देखें । यह जांचने के लिए कि रिमोट का URL ssh या https है, का उपयोग करें git remote -v। Https से ssh पर स्विच करने के लिए:git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
मानवलन गजपति

824

किचेन के बिना पहचान जोड़ें

ऐसा समय हो सकता है जिसमें आप किचेन में रखा हुआ पासफ़्रेज़ नहीं चाहते, लेकिन बार-बार पासफ़्रेज़ में प्रवेश नहीं करना चाहते।

आप ऐसा कर सकते हैं:

ssh-add ~/.ssh/id_rsa 

यह आपको पासफ़्रेज़ के लिए पूछेगा, इसे दर्ज करें और यह तब तक फिर से नहीं पूछेगा जब तक आप पुनः आरंभ नहीं करते।

किचेन का उपयोग करके पहचान जोड़ें

जैसा कि @ डेनिस टिप्पणियों में बताते हैं, पासफ़्रेज़ को अपने किचेन में संग्रहीत करके पुनरारंभ के माध्यम से जारी रखने के लिए, आप इस तरह की पहचान जोड़ते समय -Kविकल्प ( -kउबंटू के लिए) का उपयोग कर सकते हैं :

ssh-add -K ~/.ssh/id_rsa

एक बार फिर, यह आपसे पासफ़्रेज़ के लिए पूछेगा, इसे दर्ज करें और इस बार यह पहचान के लिए फिर कभी नहीं पूछेगा।


178
ध्यान दें कि यह पुनरारंभ पर पहचान को बनाए नहीं रखेगा। आप -Kइसे जोड़ते समय अपने किचेन में पासफ़्रेज़ को स्टोर करने के लिए विकल्प का उपयोग कर सकते हैं , जैसेssh-add -K ~/.ssh/id_rsa
डेनिस

29
-kमेरे लिए कम मामला ... (लिनक्स मिंट / उबंटू 14.04 आधार) लेकिन हाँ! अंत में यह छांटा गया ...
लुई मैडॉक्स

8
बस कमांड "ssh-add" चला रहे हैं और एक बार पासवर्ड दर्ज करें, कमांड लाइन आपको फिर से पासवर्ड के लिए संकेत नहीं देगी।
अवनीश केशरी

14
आपको किसी तर्क की आवश्यकता नहीं है; बस चल रहा है ssh-addस्वचालित रूप से जोड़ देगा ~/.ssh/id_rsa(अन्य फ़ाइलों के बीच)। और आउटपुट को भेजने का कोई कारण नहीं है /dev/null; यह क्या किया की रिपोर्ट को देखने के लिए बेहतर है।
टेड हॉप

6
कोई भी विचार क्यों मुझे "आपके प्रमाणीकरण एजेंट के लिए कनेक्शन नहीं खोल सका?"
डोकसपर

251

Mac OSX पर आप कमांड का उपयोग करके अपनी निजी कुंजी को किचेन में जोड़ सकते हैं:

ssh-add -K /path/to/private_key

यदि आपकी निजी कुंजी ~ / .sh पर संग्रहीत है और इसे id_rsa नाम दिया गया है:

ssh-add -K ~/.ssh/id_rsa

फिर आपको अपने पासवर्ड के लिए संकेत दिया जाएगा, जिसे आपके किचेन में स्टोर किया जाएगा।

संपादित करें - पुनः आरंभ करें

पुनरारंभ करने के बाद भी अपने पासवर्ड को न भरने के लिए, अपनी ssh कॉन्फ़िगरेशन फ़ाइल में निम्नलिखित जोड़ें (आमतौर पर ~ / .sh / config पर स्थित)।

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

7
मेरे मामले में, यह अभी भी पुनरारंभ के बाद पासफ़्रेज़ के लिए संकेत दे रहा है (macOS Sierrra 10.12.2)। कोई विचार कैसे इस को हल किया जा सकता है?
inigo333

9
कोई बात नहीं, मुझे सिर्फ मुद्दा मिला है। यह मैक ओएस एक्स 10.12 से एक बग (सुविधा?) है, जिसमें ssh- एजेंट स्टार्टअप के दौरान किचेन पर पासफ़्रेज़ को स्वचालित रूप से लोड नहीं करता है। github.com/lionheart/openradar-mirror/issues/15361
inigo333

2
@ inigo333 दिलचस्प है। मैंने अभी अपडेट किया है और इस पर खुद गौर किया है!
Groot

1
@Groot, BTW, "Host * UseKeychain Yes" को "~ / .ssh / config" में जोड़कर, जैसा कि अन्य उत्तरों में सुझाया गया है, समस्या को हल करता है।
इनग्यू 333

1
यह स्वीकृत उत्तर होना चाहिए। विशेष रूप से कॉन्फ़िगर फ़ाइल~/.ssh
Xavi

186

मैंने यहाँ सभी उत्तरों की कोशिश की और इनमें से किसी भी उत्तर ने काम नहीं किया ! मेरा पासवर्ड मेरे मैक के सत्र / पुनरारंभ के बीच नहीं रहेगा।

मुझे इस OpenRadar और इस Twitter चर्चा को पढ़ने से जो पता चला वह यह था कि Apple ने जानबूझकर macOS 10.12 Sierra में ssh- एजेंट के व्यवहार को बदल दिया था, जो अब पिछली SSH कुंजियों को स्वचालित रूप से लोड नहीं करता है। एल कैप के समान व्यवहार बनाए रखने के लिए मैंने निम्नलिखित कार्य किया:

  1. ssh-add -K ~/.ssh/id_rsa
    नोट: जहां आपका id_rsa कुंजी स्थित है, वहां पथ बदलें।
  2. ssh-add -A
  3. निम्न ~/.ssh/configफ़ाइल बनाएं (या मौजूद होने पर संपादित करें) :

    Host *
      UseKeychain yes
      AddKeysToAgent yes
      IdentityFile ~/.ssh/id_rsa
    

और अब मेरा पासवर्ड मेरे मैक के पुनरारंभ के बीच याद किया जाता है!


2
यह या तो github या osx प्रलेखन पृष्ठों को जोड़ने के लिए कुछ उपयोगी हो सकता है । सबसे कठिन समय था क्यों मेरे मैक 10.11 चल रहा है और मेरे अन्य 10.12 चल रहा है जहां अलग तरह से व्यवहार।
Grr

5
OSX अपग्रेड के बाद मेरे पास आया, धन्यवाद (मुझे लगता ssh-add -Aहै कि अगर आपके पास केवल एक ही कुंजी है तो इसकी आवश्यकता नहीं है ~/.ssh/id_rsa)
डोरियन

1
यह एक अविश्वसनीय रूप से उपयोगी उत्तर है। धन्यवाद, आपने मेरा दिन बना दिया।
जाॅन नैश

2
अक्टूबर 2017 तक, यह उत्तर वही है जो आप देख रहे हैं कि क्या आप macOS 10.12 या इससे अधिक का उपयोग कर रहे हैं।
ब्रजग्राम 18

3
और यह अब github डॉक्स पर है: help.github.com/articles/…
टोड प्राइस

35

आप कुंजी के लिए पासफ़्रेज़ हटा सकते हैं

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

या आप चला सकते हैं

$ ssh-keygen -p

तुम keyfile के लिए एक संकेत मिलता है। डिफ़ॉल्ट रूप से यह ~/.ssh/id_rsaप्रेस दर्ज करें

आपको वर्तमान पास वाक्यांश के लिए संकेत दिया जाएगा।

फिर नए पास वाक्यांश के लिए एक संकेत होगा, एंटर दबाएं


यह चाबी का गुच्छा के लिए पासफ़्रेज़ जोड़ने के लिए लगभग समान उत्तरों से बहुत अधिक होना चाहिए। मुझे अपनी सार्वजनिक कुंजी एक व्यवस्थापक को देनी थी, और एक पासफ़्रेज़ भी शामिल था जो हर बार टाइप करने के लिए परेशान हो जाता था। यह एक साफ समाधान आप (अपने मशीन पर अधिक नियंत्रण की जरूरत नहीं है जब है -K, -k, -Aमेरे लिए काम नहीं किया था)।
gwg 15

1
यह केवल एक चीज है जो मेरे लिए फिर से शुरू हुई, सभी ssh-add -K, -k, आदि कमांड्स ने मेरे लिए एक काम नहीं किया।
अमलगोविनस

28

बस निम्नलिखित कमांड चलाएँ:

ssh-add -K

यह आपसे कभी भी पासवर्ड दर्ज करने के लिए नहीं कहेगा।


3
यह बहुत अच्छा काम करता है, लेकिन मैं एक यादृच्छिक कमांड चलाने के बारे में थोड़ा चिंतित था। हालाँकि, यदि आप डॉक्स की जाँच करते हैं तो ssh-add"प्रमाणीकरण एजेंट के लिए निजी कुंजी पहचान जोड़ता है", और -Kविकल्प बस इतना बनाता है "पहचान जोड़ते समय, प्रत्येक पासफ़्रेज़ को उपयोगकर्ता के किचेन में भी संग्रहीत किया जाएगा।"
मशीनगॉस्ट

8
वास्तव में, यह केवल तब तक तय होता है जब तक कि मैं पुनः आरंभ नहीं करता :(
मशीनघोस्ट

5
विंडोज के लिए बैश शेल में, "-k" फ्लैग को लोअरकेस करना होगा। बस FYI करें
फर्गस

27

सुनिश्चित करें कि आप अपने भंडार के लिए भी ssh का उपयोग कर रहे हैं

mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin git@github.com:eMahtab/jenkins-cje-2017.git (fetch) origin git@github.com:eMahtab/jenkins-cje-2017.git (push)

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

Https का उपयोग न करें, यदि आपका रिमोट https का उपयोग कर रहा है, तो यह पासवर्ड मांगता रहेगा, भले ही आपने सार्वजनिक कुंजी को गितुब में जोड़ दिया हो और ssh-Agent के लिए निजी कुंजी जोड़ दी हो। नीचे हमेशा पासवर्ड मांगा जाएगा

mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin https://github.com/eMahtab/jenkins-cje-2017.git (fetch) origin https://github.com/eMahtab/jenkins-cje-2017.git (push)


हाँ दो दूरस्थ URL प्रकारों के बीच अंतर करना मेरे लिए मददगार था। यह मैं के मामले में मदद की git pullऔर git push। मैंने अपने url को HTTPS प्रकार से SSH प्रकार में बदल git pullदिया , और उसने काम किया- पासवर्ड मांगना बंद कर दिया।
माइकल आर

1
: स्विचिंग इस आदेश के साथ किया जा सकता हैgit remote set-url origin git@github.com:USERNAME/REPOSITORY.git
गुइडो

17

मुझे अमल करना था:

eval `ssh-agent -s`
ssh-add

नोट : आपको इसे हर पुनरारंभ के बाद फिर से करना होगा। यदि आप इससे बचना चाहते हैं, तो इसे अपनी " .bashrc " फ़ाइल में दर्ज करें जो C:\Users\<<USERNAME>>\.bashrcविंडोज़ पर है। यह शायद छिपा हुआ है, इसलिए सुनिश्चित करें कि आप छिपी हुई फ़ाइलों को देख सकते हैं।

समाधान यहाँ पाया गया


15

यदि आप विंडोज़ का उपयोग कर रहे हैं, तो यह मेरे लिए काम कर रहा है:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

यह दूसरी कमांड में पासफ़्रेज़ के लिए पूछेगा, और यह बात है।


1
जब आप लॉगआउट करते हैं और फिर से आते हैं, तो आपको हर बार पासवर्ड दर्ज करना होगा।
ट्रेनोनास


11

आपको ssh एजेंट का उपयोग करने की आवश्यकता है।
TL; DR : टर्मिनल खोलें और कोशिश करें

ssh-add

धक्का देने से पहले। संकेत मिलने पर अपना पासफ़्रेज़ दर्ज करें।

यहां मूल StackExchange उत्तर देखें


6

मैंने हाल ही में macOS Mojave में अपग्रेड किया, और होमब्रेव के माध्यम से कुछ टूल इंस्टॉल किए, जो ssh-addकि अलग-अलग के लिए ऐप्पल के संस्करण को स्वैप करना प्रतीत होता था । मेरे डिफ़ॉल्ट संस्करण ssh-add नहीं किया है -Kविकल्प। इसके कारण निम्न त्रुटि हुई:

# ssh-add: illegal option -- K

आप देख सकते हैं कि ssh-addआपके पास कौन सा संस्करण चल रहा है which ssh-add

(मेरा में संग्रहीत किया गया था /usr/local/bin/ssh-add )

इसे ठीक करने के लिए, मुझे Apple के संस्करण की कुंजी को इंगित करना था :

/usr/bin/ssh-add -K ~/.ssh/id_rsa

Git / GitHub ने बाद में पूरी तरह से काम किया। अधिक जानकारी के लिए, देखें: त्रुटि: ssh-add: अवैध विकल्प - K


हाई सियरा 10.13.6 के साथ मेरे आईमैक पर भी यही समस्या थी - यह मेरे लिए काम करता है। धन्यवाद!
emccracken

मेरा ठीक काम कर रहा था और बेतरतीब ढंग से फिर से पासफ़्रेज़ माँगना शुरू कर दिया था - शायद हाल ही में अपडेट के बाद। यह तय! धन्यवाद
mc01

5

मैक OSX सिएरा के लिए, मैंने पाया कि ओपन राडार के लिए गितुब मुद्दे में सुझाए गए सुधारों ने मेरी समस्या को ठीक कर दिया। सिएरा की तरह लगता है डिफ़ॉल्ट व्यवहार बदल (मैं उन्नयन के बाद इस समस्या को शुरू कर दिया)।

यह मुझे विशेष रूप से उपयोगी लगा: https://github.com/lionheart/openradar-mirror/issues/15361#issuecomment-249059061

ssh-add -A 

मेरे भाग जाने के बाद मेरी पहचान एजेंट में जुड़ गई

ssh-add -K {/path/to/key}

संक्षेप में, OSX.12 में:

ssh-add -K {/path/to/key}
ssh-add -A 

परिणाम में होना चाहिए:

Identity added: {/path/to/file} ({/path/to/file})

संपादित करें: मैंने अगली बार देखा कि मैंने एक पूर्ण रीबूट किया (उर्फ एजेंट ने रोका और पुनः आरंभ किया) यह अब काम नहीं करता। अधिक पूर्ण समाधान @ChrisJF ऊपर उल्लिखित है: एक ~/.ssh/configफ़ाइल बनाना। यहाँ मेरा उत्पादन है:

$ cat ~/.ssh/config
Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

आप जितनी चाहें उतनी IdentityFileप्रविष्टियाँ जोड़ सकते हैं , लेकिन यह डिफ़ॉल्ट सेटअप है। यह ऊपर, ATM के साथ ही ओपेनरार लिंक पर "ट्रेंडिंग" उत्तर है।


संपादित एक ने मेरी समस्या हल कर दी। MacOS Mojave 10.14.3
जोस

4

LinuxMint / Ubuntu में काम किया

निम्न चरण करें

चरण 1:

गोटो फ़ाइल => /.ssh/config

फ़ाइल में नीचे की पंक्तियों को सहेजें

Host bitbucket.org
    HostName bitbucket.org
    User git
    IdentityFile /home/apple/myssh-privatekey
    AddKeysToAgent yes

इस पंक्ति को जोड़ना न भूलें AddKeysToAgent हाँ

चरण 2:

टर्मिनल खोलें और ssh-add में कीसेट को जोड़ें

$ ssh-add -k /home/apple/myssh-privatekey

पासफ़्रेज़ प्रदान करें।


3

मैंने पहले ही एक पासफ़्रेज़ सेट कर दिया था, लेकिन किसी कारण से यह अब इसे पहचान नहीं सका। इसलिए मैंने बस अपने किचेन में पहचान फ़ाइल को फिर से उपयोग किया ssh-add -Kऔर इसने मेरा पासवर्ड पूछना बंद कर दिया।


यह केवल चाबियाँ लोड करता है और प्रमाण पत्र नहीं
numediaweb


2

समस्या इसलिए लगती है क्योंकि आप HTTPS से क्लोनिंग कर रहे हैं न कि SSH से। मैंने यहां अन्य सभी समाधानों की कोशिश की, लेकिन अभी भी समस्याओं का सामना कर रहा था। इसने मेरे लिए यह किया।

इस osxkeychain helperतरह का उपयोग करना :

  1. पता लगाएँ कि क्या आपने इसे स्थापित किया है।

    git credential-osxkeychain

  2. यदि यह स्थापित नहीं है, तो आपको इसे Xcode कमांड लाइन टूल्स के हिस्से के रूप में डाउनलोड करने के लिए प्रेरित किया जाएगा।

  3. यदि यह स्थापित है, osxkeychain helperतो वैश्विक credential.helperविन्यास का उपयोग करने के लिए Git को बताएं :

    git config --global credential.helper osxkeychain

अगली बार जब आप एक HTTPS url क्लोन करते हैं, तो आपको उपयोगकर्ता नाम / पासवर्ड के लिए, और OSX Echain को एक्सेस देने के लिए कहा जाएगा। आपके द्वारा पहली बार ऐसा करने के बाद, इसे आपके किचेन में सहेजा जाना चाहिए और आपको इसे फिर से लिखना नहीं पड़ेगा।


2

यह उत्तर मुख्य रूप से विंडोज़ उपयोगकर्ताओं के लिए है और समान रूप से प्रासंगिक है यदि आपको किसी अन्य ओएस पर tfs, github या gitlab के साथ क्लोनिंग में समस्या हो रही है।

SSH का उपयोग करते समय डिफ़ॉल्ट प्रमाणीकरण मोड निजी कुंजी है। जब भी किन्हीं कारणों से विफल होता है, तो ssh-agent उपयोगकर्ता नाम और पासवर्ड आधारित प्रमाणीकरण पर वापस आ जाता है।

डिफ़ॉल्ट कुंजी आधारित प्रमाणीकरण विफल होने के कई कारण हो सकते हैं। निम्नलिखित सबसे आम मामले हैं:

a) ssh- एजेंट को डिफ़ॉल्ट निजी कुंजी फ़ाइल नहीं मिल रही है जो id_rsa है , और कोई अन्य मुख्य पथ स्पष्ट रूप से निर्दिष्ट नहीं है।

ख) सर्वर में संग्रहीत सार्वजनिक कुंजी गलत है।

c) जिस पथ को आप क्लोन करने का प्रयास कर रहे हैं वह गलत है।

किसी भी स्थिति में, समस्या के निवारण के लिए सबसे पहले कमांड के साथ क्रिया लॉगिंग के साथ git क्लोन कमांड निष्पादित करें:

GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone ssh://pathToYourRepo

आप लॉग में प्रत्येक चरण के माध्यम से जा सकते हैं कि समस्या क्या हो सकती है इसका अंतर्ज्ञान प्राप्त करने के लिए।


(ए) के मामले में समस्या निवारण

  • सुनिश्चित करें कि आपके पास .ssh निर्देशिका में डिफ़ॉल्ट कुंजी नाम id_rsa है। जब आप ssh-keygen कमांड के साथ कुंजी जेनरेट कर रहे हों या हो सकता है कि आपने कुछ अलग keyname निर्दिष्ट किया हो या हो सकता है कि कोई कुंजी नहीं हो)।
  • यदि आप प्रमाणीकरण के लिए एक भिन्न कुंजी निर्दिष्ट करना चाहते हैं, तो निम्नलिखित कमांड का उपयोग करें:

    ssh-agent bash -c 'ssh-add ~/.ssh/anotherKey; git clone ssh://pathToYourRepo'
    

(बी) के मामले में समस्या निवारण

  • सुनिश्चित करें कि सर्वर में सार्वजनिक कुंजी संग्रहीत करते समय अतिरिक्त सफेद स्थान नहीं हैं।

(सी) के मामले में समस्या निवारण

  • सुनिश्चित करें कि आप रिपॉजिटरी पथ के https संस्करण के साथ क्लोन करने का प्रयास नहीं कर रहे हैं।

1

यदि आप git के लिए ssh url का उपयोग कर रहे हैं, जब ssh के लिए पासवर्ड के लिए संकेत दिया जाए तो उपयोगकर्ता नाम को " git " और पासवर्ड को आपके सिस्टम के लॉगिन पासवर्ड के रूप में डालें।


मेरी समस्या हल HTTPSकरने के लिए रिपॉजिटरी दूरस्थ URL प्रकार को बदलना SSH। धन्यवाद @MichaelR, आपका लेख वास्तव में मददगार था, हालाँकि मैंने इसमें से कुछ भी नहीं पढ़ा है: D
Geradlus_RU

1

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

जब मैंने कुंजी जनरेट की और सर्वर पर कॉपी की:

ssh-keygen
ssh-copy-id -i ~/.ssh/12gpu_server.pub lerner@192.168.20.160

मैंने पाया कि यह काम नहीं किया।

फिर मैं ~/.ssh/configफ़ाइल की जाँच करने गया , मैंने इसे सबसे नीचे देखा:

Host *
IdentitiesOnly yes

फिर मैं इसे ऊपर जोड़ता हूं:

Host 12gpu
HostName 192.168.20.160
User lerner
IdentityFile ~/.ssh/12gpu_server

मैं सिर्फ प्रवेश करके प्रवेश कर सकता हूं ssh 12gpu

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

होस्ट वह नाम है जिसे आप बाद में सर्वर से कनेक्ट करते समय दर्ज करना चाहते हैं; होस्टनाम सर्वर का IP या github.com तरह डोमेन है, उपयोगकर्ता वह उपयोगकर्ता नाम है जिसे आप सर्वर में लॉग इन करते हैं जैसे उपयोगकर्ता नाम या गिट के लिए gitlab या gitlab; और IdentityFile वह फ़ाइल है जहाँ आप अपने द्वारा बनाई गई कुंजी संग्रहीत करते हैं।


1

आम तौर पर, पासवर्ड के बिना ssh का उपयोग करके आपको अपने सर्वर से एक दूरस्थ संबंध बनाने की अनुमति देने के लिए चरण हैं:

  • Rsa निजी और सार्वजनिक कुंजी की एक जोड़ी बनाएँ

    $ ssh-keygen -t rsa -b 4096 -C "your comments"
    
  • अपनी सार्वजनिक कुंजी की प्रतिलिपि बनाएँ और अपने दूरस्थ सर्वर पर लॉगिन करें

  • अपनी सार्वजनिक कुंजी जोड़ें .ssh / अधिकृत_की

  • यदि आपके कंप्यूटर में कई ssh कुंजियाँ हैं, तो आप ssh-add का उपयोग करके अपनी कुंजी जोड़ सकते हैं

    $ ssh-add /path/to/private/key

  • फिर अपने सर्वर पर ssh का प्रयास करें

    $ ssh username@your_ip_address

स्रोत: http://diary-of-programmer.blogspot.com/2018/08/tips-how-to-ssh-to-your-digitalocean.html



0

यदि आप तृतीय पक्ष उपकरण के बिना Windows और GIT का उपयोग कर रहे हैं और आपकी कुंजी पासवर्ड / पासफ़्रेज़ द्वारा सुरक्षित नहीं है, तो इसका उपयोग करें:

  1. पर्यावरण चर घर आपके उपयोगकर्ता प्रोफ़ाइल (जैसे C: \ Users \ Laptop) पर सेट किया जाना चाहिए
  2. C: \ Users \ Laptop \। Ssh \ folder पर जाएं और "config" फ़ाइल को संपादित करें (या फ़ाइल बनाएँ!) उदाहरण: C: \ Users \ Laptop.ssh ​​\ config (नोट: अंत में नहीं है!)
  3. अपने git-server होस्ट को "config" फ़ाइल में इस तरह जोड़ें:

    #Example host entry
    Host myhostname.com
        HostName myhostname.com
        User git
        IdentityFile c:/users/laptop/.ssh/id_rsa.pub
        PasswordAuthentication no
        Port 422
    
  4. फ़ाइल को सहेजें और इस तरह से रिपॉजिटरी को क्लोन करें:

    git क्लोन ssh: //myhostname.com/git-server/repos/picalc.git

आप "कॉन्फ़िगरेशन" फ़ाइल होस्ट प्रविष्टि के लिए अतिरिक्त कॉन्फ़िगरेशन पैरामीटर का उपयोग कर सकते हैं। ये आपके स्थानीय गिट इंस्टॉलेशन फ़ोल्डर में पाए जा सकते हैं, जैसे " C: \ Program Files \ Git \ etc \ ssh \ ssh_config "। अंश:

# Host *
#   ForwardAgent no
#   ForwardX11 no
#   RhostsRSAAuthentication no
#   RSAAuthentication yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/identity
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519
#   Port 22
#   Protocol 2
#   Cipher 3des
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#   RekeyLimit 1G 1h

0

मेरे लिए एक ही समस्या और समाधान था:

दूरस्थ के URL को https से ssh में बदलने के लिए इस github डॉक को देखें। यह जाँचने के लिए कि रिमोट का URL ssh या https है, git रिमोट -v का उपयोग करें। Https से ssh पर स्विच करने के लिए: git Remote set-url origin git@github.com: USERNAME / REPOSITORY.git @jeeYem


0

Mobaxterme ने इसके लिए UI इंटरफ़ेस दिया था

setting > configuration > SSH > SSH Agent > [check] Use internal SSH agent "moboAgent" > add [your id_rsa and restart mobaxterme to set changes]


0

SSH कुंजी - फिर भी पासवर्ड और पासफ़्रेज़ के लिए पूछ रहा है

यदि Windows पर और SST कुंजी जनरेटर के रूप में PuTTY का उपयोग कर रहा है , तो यह त्वरित और आसान समाधान मेरे लिए एक सादे विंडोज़ कमांड लाइन का उपयोग करके एकमात्र काम करने वाला समाधान बन गया है:

  1. आपका PuTTY इंस्टालेशन दूसरों के बीच, pageant.exeऔर कई निष्पादन योग्य होना चाहिएplink.exe
  2. PuttyGen के साथ SSH कुंजी बनाते समय, कुंजी को .ppkएक्सटेंशन के साथ संग्रहीत किया जाता है
  3. भागो "full\path\to\your\pageant.exe" "full\path\to\your\key.ppk"( उद्धृत किया जाना चाहिए)। यह pageantसेवा निष्पादित करेगा और आपकी कुंजी (पासवर्ड दर्ज करने के बाद) को पंजीकृत करेगा ।
  4. पर्यावरण चर सेट करें GIT_SSH=full\path\to\plink.exe( उद्धृत नहीं किया जाना चाहिए )। यह git ssh-communication-related कमांड को रीडायरेक्ट करेगा जो पासवर्ड के लिए बिना पूछे दोबारा प्रमाणीकरण के लिए सेवा का plinkउपयोग करेगा pageant

किया हुआ!

नोट 1: यह प्रलेखनGIT_SHH पर्यावरण चर सेटिंग्स के साथ काम करते समय कुछ ख़ासियतों के बारे में चेतावनी देता है । मैं यह कर सकते हैं push, pull, fetchआदेश में अतिरिक्त पैरामीटर और सब कुछ के किसी भी संख्या के साथ मेरे लिए ठीक है (जैसा कि उसमें सुझाव दिया एक अतिरिक्त स्क्रिप्ट लिखने के लिए किसी भी आवश्यकता के बिना) काम करता है।

नोट 2:PuTTY आम तौर पर भटकाने के लिए रास्ता PATHछोड़ा जा सकता है। वैसे भी, मैं पूर्ण पथ निर्दिष्ट करना पसंद करता हूं।

स्वचालन:

कमांड लाइन से गिट का उपयोग करने से पहले निम्न बैच फ़ाइल चलाई जा सकती है। यह सेटिंग्स के उपयोग को दिखाता है:

git-init.bat
   @ECHO OFF
   :: Use start since the call is blocking
   START "%ProgramFiles%\PuTTY\pageant.exe" "%HOMEDRIVE%%HOMEPATH%\.ssh\id_ed00000.ppk"
   SET GIT_SSH=%ProgramFiles%\PuTTY\plink.exe

वैसे भी, मैं GIT_SSHमें चर सेट SystemPropertiesAdvanced.exe > Environment variablesऔर pageant.exeके रूप में जोड़ा Runरजिस्ट्री कुंजी (*)।

(*) Runरजिस्ट्री कुंजी जोड़ने के लिए चरण >

  1. Daud regedit.exe
  2. पर जाए HKEY_CURRENT_USER > Software > Microsoft > Windows > CurrentVersion > Run
  3. करो (मेनू) Edit > New > String Value
  4. एक मनमाना (लेकिन अद्वितीय) नाम दर्ज करें
  5. करो (मेनू) Edit > Modify...(या डबल-क्लिक करें)
  6. उद्धरण-संलग्न पथ में प्रवेश करें pageant.exeऔर public key, उदाहरण के लिए, "C:\Program Files\PuTTY\pageant.exe" "C:\Users\username\.ssh\id_ed00000.ppk"(ध्यान दें कि %ProgramFiles%आदि चर यहां काम नहीं करते हैं जब तक कि चरण 3 Expandable string valueमें जगह नहीं चुनते हैं String value)।

0

जैसा कि SSH पर VSTS से एक Git रेपो क्लोनिंग में समझाया गया है एक पासवर्ड पूछता है! अप्रत्याशित

सार्वजनिक कुंजी प्रमाणीकरण विफल होने के कारण समस्या हो सकती है, इसलिए यह तब mycompany खाते का पासवर्ड मांगता है।

सार्वजनिक कुंजी प्रमाणीकरण सफल होने पर ऐसा नहीं होगा।

तो आप id_rsa.pub की जांच कर सकते हैं और एक नया भी बना सकते हैं।


-1

मुझे लगता है कि @sudo के बंगबंग जवाब को स्वीकार करना चाहिए।

जब ssh कुंजी उत्पन्न होती है, तो आप पासवर्ड दर्ज करने के लिए संकेत देते समय अपना पासवर्ड टाइप करना छोड़ देते हैं।

इसका मतलब है कि आपको ssh कुंजी का उपयोग करते समय पासवर्ड की आवश्यकता नहीं है, इसलिए याद रखें कि जब ssh कुंजी उत्पन्न करें, तो पासवर्ड दर्ज न करें, इसे छोड़ने के लिए बस 'Enter' दबाएं।


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