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


1604

मैं इस त्रुटि में भाग रहा हूं:

$ git push heroku master
Warning: Permanently added the RSA host key for IP address '50.19.85.132' to the list of known hosts.
!  Your key with fingerprint b7:fd:15:25:02:8e:5f:06:4f:1c:af:f3:f0:c3:c2:65 is not authorized to access bitstarter.

मैंने कुंजियाँ जोड़ने का प्रयास किया और मुझे यह त्रुटि मिली:

$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.

26
प्रश्न: एक बार जब आप इस पृष्ठ पर हर उत्तर से गुजरते हैं, और उनमें से कोई भी काम नहीं करता है। आप आगे क्या कर सकते हैं?
ब्रैंडन बर्टेल्सन

8
@BrandonBertelsen इस पर एक प्रयास करें: $ ssh-agent /bin/sh और $ ssh-add $yourkey
श्याम

@BrandonBertelsen अगला आपको यह git config --listदेखने के लिए उपयोग करना चाहिए कि क्या आपने सेट किया है credential.helper- यदि आपके पास है तो आपको इस सेटिंग को हटा देना चाहिए, क्योंकि सहायक बेकार है।
योयो

जवाबों:


2382

क्या आपने शुरू किया ssh-agent?

कमांड ssh-agentचलाने से पहले आपको शुरू करने की आवश्यकता हो सकती है ssh-add:

eval `ssh-agent -s`
ssh-add

ध्यान दें कि यह विंडोज पर एमएससिसिट बैश के लिए एजेंट शुरू करेगा । यदि आप एक अलग शेल या ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं, तो आपको कमांड के एक संस्करण का उपयोग करने की आवश्यकता हो सकती है, जैसे कि अन्य उत्तरों में सूचीबद्ध ।

निम्नलिखित उत्तर देखें:

  1. ssh-add शिकायत करता है: आपके प्रमाणीकरण एजेंट के लिए कनेक्शन नहीं खोल सकता है
  2. Git पुश के लिए उपयोगकर्ता नाम और पासवर्ड की आवश्यकता होती है (ssh- एजेंट का उपयोग करने के बारे में विस्तृत निर्देश शामिल हैं)
  3. कैसे (git / ssh) प्रमाणीकरण एजेंट को चलाने के लिए?
  4. आपके प्रमाणीकरण एजेंट के लिए कनेक्शन नहीं खोला जा सका

स्वचालित रूप से ssh-agent प्रारंभ करने के लिए और एक ही उदाहरण को कई कंसोल विंडो में काम करने की अनुमति दें, लॉगिन पर ssh-Agent देखें ।

हमें evalकेवल के बजाय उपयोग करने की आवश्यकता क्यों है ssh-agent?

क्यों पता लगाने के लिए, रॉबिन ग्रीन का जवाब देखें

सार्वजनिक बनाम निजी कुंजी

इसके अलावा, जब भी मैं उपयोग करता हूं ssh-add, मैं हमेशा इसमें निजी कुंजी जोड़ता हूं। फ़ाइल ~/.ssh/id_rsa.pubसार्वजनिक कुंजी की तरह दिखती है, मुझे यकीन नहीं है कि यह काम करेगा। क्या आपके पास कोई ~/.ssh/id_rsaफाइल है? यदि आप इसे पाठ संपादक में खोलते हैं, तो क्या यह एक निजी कुंजी है?


17
@xtian मुझे यकीन नहीं है कि मैं इस मुद्दे को समझता हूं। मुझे सटीक विवरण नहीं पता है, लेकिन मैं अनुमान लगा रहा हूं कि निजी कुंजी कभी भी नेटवर्क पर नहीं भेजी जाती है। मुझे लगता है कि ssh-addकेवल मेजबान मशीन पर एक एन्क्रिप्टेड निजी कुंजी को डिक्रिप्ट करता है, ताकि इसे स्थानीय रूप से उपयोग किया जा सके ... यह कभी किसी को नहीं भेजा जाता है । मैं अनुमान लगा रहा हूं कि केवल सार्वजनिक कुंजी कभी भी एक नेटवर्क पर भेजी जाती है। क्या मेरी समझ गलत है?

5
तुम बहुत दयालु हो। आप बिल्कुल सही कह रहे है। मेरी गलती। यहाँ पूर्व ; ssh-add उपयोगकर्ता की ssh- एजेंट के लिए निजी कुंजी जोड़ता है (चल रही प्रक्रिया) क्लाइंट / होस्ट की ओर से सर्वर के साथ rsa- जो भी कुंजी स्वीकार कर सकता है। गीज़। मुझे नहीं पता कि इससे मुझे क्या फायदा हुआ।
xtian

21
मैं उत्सुक हूं कि क्यों eval ssh-agent -sकाम करता है, लेकिन ssh-agentयह स्वयं नहीं है।
डैनियल एमआर

12
@ डैनियलएम: एसएसएच को ssh- एजेंट का उपयोग करने के लिए दो चीजों की आवश्यकता होती है: बैकग्राउंड में चलने वाला ssh- एजेंट का उदाहरण, और एक पर्यावरण चर सेट जो SSH को बताता है कि उसे किस एजेंट ( SSH_AUTH_SOCKIIRC) से कनेक्ट करने के लिए उपयोग करना चाहिए । यदि आप बस चलाते हैंssh-agent तो एजेंट शुरू हो जाएगा, लेकिन एसएसएच को पता नहीं होगा कि इसे कहां खोजना है।
वैनेसा फिप्स

4
हालांकि उत्तर देने के लिए धन्यवाद। मैंने सिर्फ इस बात पर ध्यान दिया कि आपने कमांड में backquote का उपयोग किया है। मैं इतना उलझन में हूं कि मेरे बैश शेल पर बैकलिट (`) क्यों नहीं, बल्कि इकलौती / दोहरी बोली (',') के लिए काम करती है?
वीशी ज़ेंग

539

मैंने बिना किसी लाभ के अन्य समाधानों की कोशिश की। मैंने और अधिक शोध किया और पाया कि निम्नलिखित कमांड ने काम किया। मैं विंडोज 7 और गिट बैश का उपयोग कर रहा हूं ।

eval $(ssh-agent)

अधिक जानकारी: https://coderwall.com/p/rdi_wq


14
विंडोज 8 पर भी काम किया।
एंड्रियास रुडोल्फ

मैं भी विंडोज 7 और गिट बैश का उपयोग कर रहा हूं, और मेरा जवाब ठीक काम करता है। यह अच्छा है कि आप इसे इस तरह से भी कर सकते हैं।

2
महान !! विंडोज़ 10 के साथ भी काम किया।
नितिनम

1
मंजरो पर काम किया
कोड_फ्लो

1
$ eval "$ (ssh-agent -s)" ने मेरे लिए विंडोज 10 पर काम किया
एंड्रयू एंडरसन

261

निम्नलिखित कमांड ने मेरे लिए काम किया। मैं CentOS का उपयोग कर रहा हूं।

exec ssh-agent bash

3
धन्यवाद, इसने मेरे लिए काम किया, मैंने अपने शेल के लिए 'एग्ज़ॅम एसश-एजेंट zsh' चलाया।
जसोनमक्लेर्ग

2
हटाए गए "उत्तर" के अनुसार , यह अमेज़ॅन लिनक्स एएमआई पर भी काम करता है। मुझे लगता है कि यह एक यूनिक्स / लिनक्स / * निक्स समाधान है।

4
मैं एक डॉक कंटेनर में ssh'ed हूं और ssh-add my.id_rsaमुझ पर विफल हो जाऊंगा । लेकिन exec ssh-agent zshएक ऐसा वातावरण दिया, जहां मुझे ssh-addकोई समस्या न हो । और मैं अपने
डॉकटर

किसी को भी कृपया संक्षेप में बता सकते हैं कि मुद्दा क्या हो सकता है? धन्यवाद :) यह मेरे Ubuntu 14.04 पर भी काम किया।
harkirat1892

रास्पियन पर भी काम किया
मेगा_क्रैमी

215

MsysGit या Cygwin

यदि आप Msysgit या Cygwin का उपयोग कर रहे हैं तो आप SSH- एजेंट पर msysgit और cygwin और bash में एक अच्छा ट्यूटोरियल पा सकते हैं :

  1. .bashrcअपने होम फोल्डर में एक फाइल जोड़ें ।

  2. फ़ाइल खोलें और इसमें पेस्ट करें:

    #!/bin/bash
    eval `ssh-agent -s`
    ssh-add
  3. यह मानता है कि आपकी कुंजी पारंपरिक ~/.ssh/id_rsaस्थान पर है। यदि ऐसा नहीं है, तो ssh-addकमांड के बाद एक पूर्ण पथ शामिल करें ।

  4. ~/.ssh/configसामग्री के साथ फ़ाइल जोड़ें या बनाएं

    ForwardAgent yes
    

    मूल ट्यूटोरियल में ForwardAgentपरम है Yes, लेकिन यह एक टाइपो है। सभी लोअरकेस का उपयोग करें या आपको त्रुटियां मिलेंगी।

  5. Msysgit पुनरारंभ करें। यह आपको एक बार अपना पासफ़्रेज़ दर्ज करने के लिए कहेगा, और यह वह है (जब तक आप सत्र समाप्त नहीं करते हैं, या आपका ssh- एजेंट मारा जाता है।)

मैक ओएस एक्स

यदि आप हर बार टर्मिनल खोलते समय एक नया ssh- एजेंट शुरू नहीं करना चाहते हैं, तो किचेन देखें । मैं अब मैक पर हूं, इसलिए मैंने इसे स्थापित करने के लिए मैक ओएस एक्स पर zsh और कीचेन के साथ ट्यूटोरियल ssh- एजेंट का उपयोग किया , लेकिन मुझे यकीन है कि Google खोज में विंडोज के लिए बहुत सारी जानकारी होगी।

अद्यतन : मैक पर एक बेहतर उपाय मैक ओएस कीचेन में अपनी कुंजी जोड़ना है:

ssh-add -K ~/.ssh/id_rsa

इतना ही आसान।



1
जब मैं eval `ssh-agent -s`साइबरविन से बाहर निकलता हूं तो प्रक्रिया बंद नहीं होती है।
किरिल

वहाँ विंडोज / gitbash के लिए कॉन्फ़िगर करने के लिए सेटअप करने का एक तरीका है ताकि आपको हर बार ऐसा न करना पड़े?
मिश्रण 3 डी जूल

4
यह होना चाहिए ps -u $(whoami) | grep ssh-agent &> /dev/null || eval $(ssh-agent)- अन्यथा हर बार एक नया ssh- एजेंट शुरू किया जाता है। मेरी मशीन को अब हर बार तब मारते हैं जब उपयोगकर्ता के पास क्रोनोजर होता है।
श्रेडिंग

3
ForwardAgent yesयह आवश्यक नहीं है और अगर यह किसी भी अविश्वसनीय सर्वर के लिए सेट है, तो यह एक गैर-सुरक्षा सुरक्षा जोखिम है। अपने कुंजी-एजेंट के लिए स्थानीय पहुँच इस सेटिंग की परवाह किए बिना कार्य करना चाहिए।
सेलेडमनीडे

208

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

इस त्रुटि को हल करने के लिए:

दे घुमा के:

$ eval `ssh-agent -s`

tcsh:

$ eval `ssh-agent -c`

फिर ssh-addसामान्य रूप से उपयोग करें ।


गर्म नोक:

मैं हमेशा भूल गया था कि उपरोक्त ssh- एजेंट कमांड के लिए क्या लिखना है, इसलिए मैंने अपनी .bashrcफ़ाइल में इस तरह से एक उपनाम बनाया :

alias ssh-agent-cyg='eval `ssh-agent -s`'

अब उपयोग करने के बजाय ssh-agent, मैं उपयोग कर सकता हूंssh-agent-cyg

उदाहरण के लिए

$ ssh-agent-cyg
SSH_AUTH_SOCK=/tmp/ssh-n16KsxjuTMiM/agent.32394; export SSH_AUTH_SOCK;
SSH_AGENT_PID=32395; export SSH_AGENT_PID;
echo Agent pid 32395;
$ ssh-add ~/.ssh/my_pk

फिक्स का मूल स्रोत:

http://cygwin.com/ml/cygwin/2011-10/msg00313.html


3
आपको evalहर बार जब आप पहले भाग चुके होंगे तो आपको हर बार कमांड चलाना होगा ssh-agent। मैं अब एक उपनाम का उपयोग करता हूं, मैं यह कैसे करता हूं, इसके लिए अद्यतन जवाब देखें।
क्रिस स्नो


मुझे https के बजाय ssh विनिर्देशन का उपयोग करने की आवश्यकता है (देखें help.github.com/articles/changing-a-remote-s-url )
RunHolt

1
आप सर, आप कमाल के हैं। धन्यवाद। ** बिटकॉइन रेपो की क्लोनिंग करते समय मुझे यही समस्या आई, मैं पहले ही एक ssh कुंजी सेटअप कर चुका हूँ, लेकिन त्रुटि मिलती रही fatal: Could not read from remote repository.:।
निशांत घोडके

मेरे लिए विंडोज़ 10 पर काम किया और git bash स्थापित किया
desmond13

116

मुझे लिनक्स के लिए एक ही समस्या का सामना करना पड़ा, और यहाँ मैंने वही किया है:

असल में, कमांड ssh- एजेंट एजेंट शुरू करता है, लेकिन यह वास्तव में इसे चलाने के लिए पर्यावरण चर सेट नहीं करता है। यह सिर्फ उन चरों को शेल में आउटपुट करता है।

आपको:

eval `ssh-agent`

और फिर ssh-add करें। देखें आपके प्रमाणीकरण एजेंट के लिए कोई कनेक्शन नहीं खोल सकता है



विंडोज पर boot2docker का उपयोग करने में समस्या होने पर भी मेरे लिए काम किया।
VEVE

यह मेरे लिए क्या था।
टॉम

115

ssh-add और ssh (यह मानते हुए कि आप ओपनशीट कार्यान्वयन का उपयोग कर रहे हैं) को sash Agent से बात करने का तरीका जानने के लिए एक पर्यावरण चर की आवश्यकता होती है। यदि आपने एजेंट को एक अलग कमांड प्रॉम्प्ट विंडो में शुरू किया है जिसे आप अभी उपयोग कर रहे हैं, या यदि आपने इसे गलत तरीके से शुरू किया है, तो न तो ssh-add और न ही ssh उस पर्यावरण चर सेट को देखेगा (क्योंकि पर्यावरण चर स्थानीय रूप से सेट है से कमांड शीघ्र यह सेट है)।

आप यह नहीं कहते कि आप ssh के किस संस्करण का उपयोग कर रहे हैं, लेकिन यदि आप cygwin's का उपयोग कर रहे हैं, तो आप CyH पर SSH एजेंट के इस नुस्खे का उपयोग कर सकते हैं :

# Add to your Bash config file
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
    eval `$SSHAGENT $SSHAGENTARGS`
    trap "kill $SSH_AGENT_PID" 0
fi

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



9
मैं यहाँ एक और एसओ प्रश्न से जुड़ा हुआ था। क्या मैं पूछ सकता हूं कि बैश कॉन्फिग फाइल में इसे जोड़ना क्यों जरूरी है? मेरी मशीन पर मुझे बस चलाने की ज़रूरत है eval $(ssh-agent)और मैं हर नई टर्मिनल विंडो के लिए पासवर्ड-कम ssh का उपयोग कर सकता हूं।
एंडी जे

यह संभव नहीं होना चाहिए, जब तक कि आप उस टर्मिनल से नए टर्मिनल लॉन्च नहीं कर रहे हैं।
रॉबिन ग्रीन

113

Daud

ssh-agent bash
ssh-add

अधिक विवरण प्राप्त करने के लिए आप खोज सकते हैं

ssh-agent

या चलाते हैं

man ssh-agent

7
मैं आपको सलाह दूंगा कि यदि आप खिड़कियों पर गिट बश के साथ काम कर रहे हैं तो यह प्रयास करें।
नीरज सेवानी

@ neer17 ने मुझे ssh-copy-idubuntu पर उपयोग करने की अनुमति दी । ssh-agentलॉन्च बैश का उपयोग किए बिना मैं कुंजी क्यों नहीं जोड़ सका, यह पता न लगाएं।
SomeGuyOnAComputer

2
यह विंडोज के लिए एक है! (W10pro पर 1809 का निर्माण और 2.21.0 git पर परीक्षण किया गया)
अल्फ्रावावो

मैं ZSH का उपयोग कर रहा हूं और यह मेरे लिए काम करता है:ssh-agent zsh; ssh-add
sirboderafael

97

निम्नलिखित चरणों का प्रयास करें:

1) गेट बैश खोलें और चलाएं: cd ~/.ssh

2) एजेंट को चलाने की कोशिश करें: eval $(ssh-agent)

3) अभी, आप निम्नलिखित कमांड चला सकते हैं: ssh-add -l


9
यहाँ केवल यही एक समाधान है जो मेरे लिए काम करता है (विंडोज़ 7 पर)। पहले मैंने एजेंटों को मारने के लिए रिक के जवाब में ps aux | grep sshऔर killआदेश का उपयोग किया । उसके बाद ssh-add-l स्विच के बिना काम करना (-l का उपयोग करके एक त्रुटि दी गई)। eval 'ssh-agent'जैसा कि रिक के जवाब में काम नहीं किया था, मुझे eval $(ssh-agent)यहाँ चेचोरो के जवाब की तरह उपयोग करना था ।
फ्राग

6
+1 मुझे ओपी (विंडोज 7) के समान समस्या थी और यह एकमात्र समाधान है जिसने मेरे लिए काम किया।
वेबलर्क


2
@ फ्रॉग यह बैकस्टिक्स है, एपोस्ट्रोफ्स नहीं; शेल स्क्रिप्ट में जिसका अर्थ है कि जो अंदर निहित है उसे निष्पादित करना। $(ssh-agent)के बराबर है, `ssh-agent`लेकिन अधिक पठनीय है।
MM

96

उपयोग करने के बजाय $ ssh-agent -s, मैं $ eval `ssh-agent -s`इस मुद्दे को हल करता था।

यहाँ मैं कदम से कदम (GitBash पर 2 कदम बाद) प्रदर्शन किया है:

  1. पर मेरे .ssh फ़ोल्डर को साफ किया C:\user\<username>\.ssh\
  2. एक नई SSH कुंजी उत्पन्न की
    $ ssh-keygen -t rsa -b 4096 -C "xyz@abc.com"
  3. जांचें कि क्या कोई प्रक्रिया आईडी (ssh एजेंट) पहले से चल रही है।
    $ ps aux | grep ssh
  4. (वैकल्पिक) यदि चरण 3 में कोई पाया जाता है, तो उन्हें मार दें
    $ kill <pids>
  5. Ssh एजेंट को शुरू किया
    $ eval `ssh-agent -s`
  6. एजेंट के लिए चरण 2 में उत्पन्न ssh कुंजी जोड़ा गया
    $ ssh-add ~/.ssh/id_rsa

3
'eval' को आंतरिक या बाह्य कमांड, ऑपरेशनल प्रोग्राम या बैच फ़ाइल के रूप में मान्यता नहीं दी जाती है।
चुतीपॉन्ग रूबोकलोम

आप केवल eval द्वारा एजेंट को पुनरारंभ कर सकते हैं ssh-agent -sऔर ssh-add ~ / .ssh / id_rsa का उपयोग करके पुरानी कुंजी जोड़ सकते हैं। यदि आप नई SSH कुंजी बनाते हैं, तो आपको अपनी सभी सेवाओं जैसे कि github, bitbucket इत्यादि में उस कुंजी को अपडेट करना होगा
मोहित सतीश पवार

वहाँ एक तरीका है यह विंडोज पुनः आरंभ जीवित है? पुनरारंभ करने के बाद जब तक मैं "eval ssh-agent -s" और "ssh-add ~ / .ssh / id_rsa" को फिर से लॉन्च नहीं करता, तब तक यह काम नहीं करता है ।
मिशाल वियनस

1
लंबे समय तक खोज करने के बाद, यह समाधान है जिसने काम किया है
सुजीत.वेरियर

महान व्याख्या!
अविवमग

56

विंडोज 10 में मैंने यहां सूचीबद्ध सभी उत्तरों की कोशिश की, लेकिन उनमें से कोई भी काम नहीं कर रहा था। वास्तव में वे एक सुराग देते हैं। एक समस्या को हल करने के लिए बस आपको 3 कमांड की आवश्यकता होती है। इस समस्या का विचार यह है कि ssh-add को SSH_AUTH_SOCK और SSH_AGENT_PID परिवेश चर को वर्तमान ssh- एजेंट सॉक फ़ाइल पथ और pid संख्या के साथ सेट करने की आवश्यकता है।

ssh-agent -s > temp.txt

यह फाइल में ssh-Agent का आउटपुट सेव करेगा। पाठ फ़ाइल सामग्री कुछ इस तरह होगी:

SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3044; export SSH_AGENT_PID;
echo Agent pid 3044;

टेक्स्ट फ़ाइल से "/tmp/ssh-kjmxRb2764/agent.2764" कुछ कॉपी करें और कंसोल में सीधे कमांड का पालन करें:

set SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764

टेक्स्ट फ़ाइल से "3044" जैसे कुछ कॉपी करें और कंसोल में सीधे कमांड का पालन करें:

set SSH_AGENT_PID=3044

अब जब पर्यावरण चर (SSH_AUTH_SOCK और SSH_AGENT_PID) चालू कंसोल सत्र के लिए सेट होते हैं, तो आपका ssh-add कमांड चलता है और यह ssh एजेंट को जोड़ने में फिर से विफल नहीं होगा।


2
धन्यवाद! यह वही था जो मुझे चाहिए था।
Isochronous

6
नहीं, अभी भी वही है।
जसकी

3
ये स्टेप्स 'eval $ (ssh-agent)' करने के समान हैं
K.Nicholas

2
मेरे विंडोज 10 पर फिक्स्ड! धन्यवाद!
ntl

1
इसने वास्तव में लिनक्स पर इस मुद्दे को बचाने में मेरी मदद की ... बस जरूरत setथीexport
greg hor

30

एक बात जो मुझे पता चली वह यह evalथी कि सिग्विन का उपयोग करके मेरे लिए काम नहीं किया गया था, जो मेरे लिए काम करता था ssh-agent ssh-add id_rsa

उसके बाद मैं इस मुद्दे पर आया कि मेरी निजी कुंजी बहुत खुली हुई थी, जिस समाधान को मैं ( यहाँ से ) खोजने में कामयाब रहा :

chgrp Users id_rsa

साथ ही साथ

chmod 600 id_rsa

अंत में मैं उपयोग करने में सक्षम था:

ssh-agent ssh-add id_rsa

आप का उपयोग किया eval `ssh-agent`बैकटिक साथ, `चारों ओर ssh-agent, के रूप में में दिखाया गया है मेरा उत्तर ? यह मेरे लिए सिगविन में ठीक काम करता है। आप सही प्रतीत होते हैं ssh-agent ssh-add, हालांकि यह भी काम करता है, कम से कम msysgit बैश में। हालाँकि, ध्यान दें कि id_rsaवह डिफ़ॉल्ट कुंजी है जिसका उपयोग किया गया है, इसलिए आपको इसे निर्दिष्ट करने की आवश्यकता नहीं है ssh-agent ssh-add id_rsa

मेरा मानना ​​है कि मैंने
बैकटिक्स

1
OMG आपने मेरा बहुत ही अच्छा काम किया है। धन्यवाद!
ची लूंग सून

इस जवाब ने मेरे लिए काम किया।
लसकुरीफैसु

27

विंडोज 7 के लिए n3o के उत्तर को बढ़ाना ...

मेरी समस्या वास्तव में यह थी कि कुछ आवश्यक पर्यावरण चर सेट नहीं किए गए थे, और n3o सही है कि ssh- एजेंट आपको बताता है कि उन पर्यावरण चर को कैसे सेट किया जाए, लेकिन वास्तव में उन्हें सेट नहीं किया जाता है।

चूँकि विंडोज़ आपको "निष्कासन" करने की अनुमति नहीं देता है, यहाँ इसके बजाय क्या करना है:

एक बैच फ़ाइल के साथ ssh- एजेंट के आउटपुट को पुनर्निर्देशित करें

ssh-agent > temp.bat

अब temp.bat को संपादित करने के लिए नोटपैड जैसे पाठ संपादक का उपयोग करें। पहली दो पंक्तियों में से प्रत्येक के लिए: - शब्द "सेट" और पंक्ति की शुरुआत में एक स्थान डालें। - पहले अर्धविराम और उसके बाद आने वाली हर चीज को हटा दें।

अब तीसरी लाइन को डिलीट करें। आपका temp.bat कुछ इस तरह दिखना चाहिए:

set SSH_AUTH_SOCK=/tmp/ssh-EorQv10636/agent.10636
set SSH_AGENT_PID=8608

भागो temp.bat। यह पर्यावरण चर सेट करेगा जो कि ssh-add को काम करने के लिए आवश्यक है।



मैं अभी भी Could not open a connection to your authentication agent.Win10 PowerShell में ssh-add चलाते समय मिलता हूं ।
केबमैन

19

मुझे सिर्फ यह काम मिला है। अपने खुले~/.ssh/config फ़ाइल ।

निम्नलिखित संलग्न करें-

Host github.com
 IdentityFile ~/.ssh/github_rsa

इस पृष्ठ ने मुझे संकेत दिया कि सेट फॉर जीआईटी के लिए एसएसएच ने कहा कि सिंगल स्पेस इंडेंटेशन महत्वपूर्ण है ... हालांकि मेरा यहां हेरोकू से एक कॉन्फ़िगरेशन था जिसमें वह स्थान नहीं था और ठीक से काम करता था।


1
यह SSH कुंजी के लिए पासफ़्रेज़ दर्ज करने में मदद नहीं करता है।
एल्श

1
यदि आप पासफ़्रेज़ दर्ज नहीं करना चाहते हैं, तो बिना एक कुंजी बनाएं। पासफ़्रेज़ होने का कोई मतलब नहीं है अगर आप इसे वैसे भी अपनी स्क्रिप्ट में संग्रहीत करने जा रहे हैं।
पॉल बिकोटे

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

यह मेरे लिए यहां सबसे अच्छा जवाब है। विंडोज 7 में हज़ारों बार शुरू होने वाले ssh-agent के साथ बहुत सारी समस्याएं थीं और यह कि ट्रैप को नहीं मारता था। मुझे कोई आपत्ति नहीं है कि घर पर मेरे पर्सनल कंप्यूटर पर कोई पासफ़्रेज़ नहीं है।
19

18

यदि आप इन निर्देशों का पालन करते हैं, तो आपकी समस्या हल हो जाएगी।

यदि आप मैक या लिनक्स मशीन पर हैं, तो टाइप करें:

eval "$(ssh-agent -s)"

यदि आप विंडोज मशीन पर हैं, तो टाइप करें:

ssh-agent -s

13

मुझे एक और समाधान पेश करें। यदि आपने अभी Git 1.8.2.2 या उसके स्थान पर इंस्टाल किया है, और आप SSH को सक्षम करना चाहते हैं, तो अच्छी तरह से लिखे गए निर्देशों का पालन करें

चरण 5.6 के माध्यम से सब कुछ जहां आप एक मामूली रोड़ा सामना कर सकते हैं। यदि कोई SSH एजेंट पहले से चल रहा है, तो आपको bash को पुनरारंभ करने पर निम्न त्रुटि संदेश मिल सकता है

Could not open a connection to your authentication agent

यदि आप करते हैं, तो निम्न कमांड का उपयोग करके देखें कि क्या एक से अधिक ssh- एजेंट प्रक्रिया चल रही है

ps aux | grep ssh

यदि आप एक से अधिक ssh- एजेंट सेवा देखते हैं, तो आपको इन सभी प्रक्रियाओं को मारने की आवश्यकता होगी। निम्नानुसार किल कमांड का उपयोग करें (पीआईडी ​​आपके कंप्यूटर पर अद्वितीय होगी)

kill <PID>

उदाहरण:

kill 1074

आपके द्वारा ssh- एजेंट प्रक्रियाओं को हटाने के बाद, px aux चलाएं | grep ssh कमांड फिर से सुनिश्चित हो कि वे चले गए हैं, फिर बैश को पुनरारंभ करें।

वोइला, अब आपको कुछ इस तरह से मिलना चाहिए:

Initializing new SSH agent...
succeeded
Enter passphrase for /c/Users/username/.ssh/id_rsa:

अब आप चरण 5.7 और उसके बाद भी जारी रख सकते हैं।


मुझे सड़क पार करवाया, tyvm
जेसन फिंगर

बस यह जोड़ना चाहता था कि मेरे मामले में सूचीबद्ध वस्तुओं में से एक grep प्रक्रिया है जिसे हम खोज के साथ कर रहे हैं, लेकिन इसके निष्पादन के बाद ही इसे मार दिया जाता है। मजाक नहीं।
रयान मोर्टेंसन


12

नोट: यह इस प्रश्न का उत्तर है , जिसे इस एक के साथ मिला दिया गया है। यह प्रश्न विंडोज 7 के लिए था, जिसका अर्थ है कि मेरा जवाब साइगविन / एमएसवाईएस / एमएसवाईएस 2 के लिए था। यह कुछ यूनिक्स के लिए लगता है, जहां मुझे उम्मीद नहीं है कि एसएसएच एजेंट को इस तरह से प्रबंधित करने की आवश्यकता होगी

यह SSH एजेंट को चलाएगा और केवल पहली बार आपको इसकी आवश्यकता को प्रमाणित करेगा , न कि हर बार जब आप अपना बैश टर्मिनल खोलते हैं। यह एसएसएच का उपयोग करके किसी भी प्रोग्राम के लिए इस्तेमाल किया जा सकता है, जिसमें ssh ही और scp भी शामिल है। बस इसमें जोड़ें /etc/profile.d/ssh-helper.sh:

ssh-auth() {
    # Start the SSH agent only if not running
    [[ -z $(ps | grep ssh-agent) ]] && echo $(ssh-agent) > /tmp/ssh-agent-data.sh

    # Identify the running SSH agent
    [[ -z $SSH_AGENT_PID ]] && source /tmp/ssh-agent-data.sh > /dev/null

    # Authenticate (change key path or make a symlink if needed)
    [[ -z $(ssh-add -l | grep "/home/$(whoami)/.ssh/id_rsa") ]] && ssh-add
}

# You can repeat this for other commands using SSH
git() { ssh-auth; command git "$@"; }


2
ssh- एजेंट प्रक्रिया उसी टर्मिनल के साथ संबद्ध नहीं लगती है जो इसे चलाने के लिए उपयोग किया जाता है। मुझे लगता है कि ps -A | grep ssh-agentया ps h -C ssh-agentके बजाय इस्तेमाल किया जाना चाहिएps | grep ssh-agent
एलेक्सिस

1
फ़ंक्शन नाम में एक हाइफ़न का उपयोग करना अनुशंसित नहीं हो सकता है। मैं पता नहीं क्यों, लेकिन पढ़ने के इस । उदाहरण के लिए, मैंने पाया कि echo ssh-auth | bashअसफल हो जाऊंगा।
एलेक्सिस

1
आप इसे थोड़ा और सरल कर सकते हैं। बस जांचें कि क्या यह चल रहा है और एनवी चर असाइन करें। और फिर अपने ssh config प्रविष्टि ( सभी होस्ट के लिए उपयोग AddKeysToAgent yesकरें prompt) को जोड़ें (या उपयोग करें Host *) इस तरह से आपको केवल SSH पासवर्ड के लिए कहा जाएगा यदि आप वास्तव में कनेक्ट करने का प्रयास करते हैं अन्यथा आपसे एक सरल git diffया एक पासवर्ड के लिए पूछा जा सकता है git status
ST-DDT

2
$HOME/.sshसे अधिक मजबूत हो सकता है/home/$(whoami)/.ssh
अरी स्वीडलर

12

मेरे पास एक ही समस्या थी Ubuntuऔर अन्य समाधानों ने मेरी मदद नहीं की। मुझे आखिरकार एहसास हुआ कि मेरी समस्या क्या थी। मैंने फ़ोल्डर sshमें अपनी चाबियाँ बनाई थीं /root/.ssh, इसलिए जब मैं ssh-addरूट के रूप में चला गया, तो भी यह अपना काम नहीं कर सका और कहता रहा

Could not open a connection to your authentication agent.

मैंने /home/myUsername/फ़ोल्डर में अपनी ssh सार्वजनिक और निजी कुंजियाँ बनाईं और मैंने उपयोग किया

ssh-agent /bin/sh

फिर मैं भागा

ssh-add /home/myUsername/.ssh/id_rsa

और इस तरह से समस्या हल हो गई।

नोट:git जब आप के sshसाथ कुंजी बना रहे हैं, तो अपने git पासवर्ड को जोड़ने पर अपने रिपॉजिटरी तक पहुँचने के लिए ssh-keygen -t rsa -C "your git email here"


11

खिड़की के उपयोगकर्ताओं के लिए, मैंने पाया कि cmd eval `ssh-agent -s`काम नहीं कर रहा था, लेकिन git bash का उपयोग करके एक उपचार का काम किया eval `ssh-agent -s`; ssh-add KEY_LOCATION, और सुनिश्चित किया कि विंडोज़ सेवा "OpenSSH कुंजी प्रबंधन" अक्षम नहीं था


9

जब आप सर्वर से कनेक्ट करते हैं तो पैरामीटर -A का उपयोग करें, उदाहरण:

ssh -A root@myhost

मैन पेज से:

-A Enables forwarding of the authentication agent connection.  
   This can also be specified on a per-host basis in a configuration file.

   Agent forwarding should be enabled with caution.  Users with the ability to bypass file permissions on the remote host (for the agent's
   UNIX-domain socket) can access the local agent through the forwarded 
   connection.  An attacker cannot obtain key material from the agent,
   however they can perform operations on the keys that enable them to
   authenticate using the identities loaded into the agent.

यह क्या और क्यों करता है?
एरिकबवर्क

मैन पेज के अनुसार ... मैन ssh ... -प्रमाण पत्र एजेंट कनेक्शन को अग्रेषित करने में सक्षम बनाता है। इसे कॉन्फ़िगरेशन फ़ाइल में प्रति-होस्ट के आधार पर भी निर्दिष्ट किया जा सकता है।
स्कॉट स्टेंसलैंड

8

चलाने ssh-agentका मूल समाधान कई उत्तरों में उत्तर दिया गया है। हालाँकि, ssh-agentकई बार (प्रत्येक खुले टर्मिनल या प्रति दूरस्थ लॉगिन के अनुसार) ssh-agentचलाने से स्मृति में चलने वाली कई प्रतियाँ ओटी बन जाएंगी । स्क्रिप्ट जो कि इस समस्या से बचने के लिए सुझाव दिया है लंबी और जरूरत है लिखने के लिए और / या अलग फ़ाइल या में भी कई तार लिखने के लिए की जरूरत है कॉपी ~/.profileया ~/.schrc। मुझे सुझाव दें सरल दो स्ट्रिंग समाधान सुझाएं:

के लिए , बैश , आदि:

# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh

के लिए csh , tcsh , आदि:

# ~/.schrc
sh -c 'if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -c > ~/.ssh-agent.tcsh; fi'
eval `cat ~/.ssh-agent.tcsh`

इधर क्या है:

  • प्रक्रिया खोजें ssh-agentनाम और वर्तमान उपयोगकर्ता द्वारा
  • यदि कोई वर्तमान उपयोगकर्ता है तो कॉल करके ssh-agentऔर ssh-agentस्वयं चलाकर उपयुक्त शेल स्क्रिप्ट फ़ाइल बनाएँssh-agent प्रक्रिया नहीं मिली
  • बनाई गई शेल स्क्रिप्ट का मूल्यांकन करें जो उपयुक्त वातावरण को कॉन्फ़िगर करता है

निर्मित शेल स्क्रिप्ट ~/.ssh-agent.tcshया ~/.ssh-agent.shकिसी अन्य उपयोगकर्ता की पहुँच से सुरक्षा करना आवश्यक नहीं है क्योंकि: पहले-साथ संचार को ssh-agentसंरक्षित सॉकेट के माध्यम से संसाधित किया जाता है जो अन्य उपयोगकर्ताओं के लिए सुलभ नहीं है, और दूसरे-दूसरे उपयोगकर्ताओं को निर्देशिका ssh-agentमें गणना फ़ाइलों द्वारा सॉकेट सरल मिल सकता है /tmp/। जहां तक ssh-agentइसे प्रोसेस करने की पहुंच के बारे में है वही चीजें हैं।



6

स्पष्टीकरण के लिए @ कपकेक का उत्तर पढ़ें । यहां मैं केवल फिक्स को स्वचालित करने का प्रयास करता हूं।

यदि आप BASH के साथ Cygwin टर्मिनल का उपयोग कर रहे हैं, तो $ HOME / .bashrc फ़ाइल में निम्न जोड़ें। यह केवल पहले बैश टर्मिनल में एक बार ssh-agent शुरू करता है और ssh-agent की कुंजियों को जोड़ता है। (निश्चित नहीं है कि यह लिनक्स पर आवश्यक है)

###########################
# start ssh-agent for
# ssh authentication with github.com
###########################
SSH_AUTH_SOCK_FILE=/tmp/SSH_AUTH_SOCK.sh
if [ ! -e $SSH_AUTH_SOCK_FILE ]; then
    # need to find SSH_AUTH_SOCK again.
    # restarting is an easy option
    pkill ssh-agent
fi
# check if already running
SSH_AGENT_PID=`pgrep ssh-agent`
if [ "x$SSH_AGENT_PID" == "x" ]; then
#   echo "not running. starting"
    eval $(ssh-agent -s) > /dev/null
    rm -f $SSH_AUTH_SOCK_FILE
    echo "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK" > $SSH_AUTH_SOCK_FILE
    ssh-add $HOME/.ssh/github.com_id_rsa 2>&1 > /dev/null
#else
#   echo "already running"
fi
source $SSH_AUTH_SOCK_FILE

"Ssh-add" कमांड में अपनी सही कुंजियाँ जोड़ने के लिए न भूलें।


5

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

eval $(ssh-agent)

यह देखने के लिए कि क्या यह वही है जो आपने सोचा था कि यह होना चाहिए। मेरे मामले में, यह मेरे द्वारा शुरू किए गए से अलग था।

यह सत्यापित करने के लिए कि आपके पास एक से अधिक ssh-agent चल रहा है, आप समीक्षा कर सकते हैं:

ps -ef | grep ssh

2
मुझे लगता eval $(ssh-agent)है कि हर बार एक अलग पीआईडी ​​के साथ एक नया एजेंट बनाना माना जाता है, हालांकि मैं गलत हो सकता हूं।

4

मुझे भी इसी तरह की समस्या थी जब मैं इसे ssh के माध्यम से स्टैस से कनेक्ट करने के लिए विंडोज पर काम करने की कोशिश कर रहा था

यहाँ समाधान है कि मेरे लिए काम किया है।

  1. मुझे पता है कि मैं अपने विंडोज बॉक्स पर पेजेंट ssh एजेंट चला रहा था - मैं जाँच करूँगा कि आप क्या चला रहे हैं। मुझे संदेह है कि यह पेजेंट है क्योंकि यह पोटीन और winScp के साथ डिफ़ॉल्ट रूप से आता है

  2. Ssh-add इस प्रकार के एजेंट के साथ कमांड लाइन से काम नहीं करता है

  3. आपको pageant UI विंडो के माध्यम से निजी कुंजी जोड़ने की आवश्यकता होती है, जिसे आप टास्कबार में Pageant आइकन को दोहराकर प्राप्त कर सकते हैं (एक बार शुरू होने के बाद)।

  4. इससे पहले कि आप पेजेंट की कुंजी जोड़ें, आपको इसे PPK प्रारूप में बदलने की आवश्यकता है। पूर्ण निर्देश यहां उपलब्ध हैं कि कैसे SSH कुंजी को पीपीपी प्रारूप में परिवर्तित करें

  5. बस इतना ही। एक बार जब मैंने अपनी कुंजी अपलोड की तो मैं स्थानीय रेपो बनाने और रिमोट को क्लोन करने के लिए सोर्सट्री का उपयोग करने में सक्षम था।

उम्मीद है की यह मदद करेगा...


3

मैंने गित प्रक्रियाओं (ssh एजेंट) को बलपूर्वक रोककर (मारकर), फिर Git की स्थापना रद्द की, और फिर Git को फिर से स्थापित करके त्रुटि को हल किया।


2
मुझे संदेह है कि आपको बस किसी भी मौजूदा एजेंट प्रक्रिया को मारने की ज़रूरत थी, फिर गिट को फिर से स्थापित करने के बजाय एक को पुनरारंभ करें।

3

Win8.1E पर गिट बैश का उपयोग करना, मेरा संकल्प इस प्रकार था:

eval $(ssh-agent) > /dev/null
ssh-add ~/.ssh/id_rsa

क्यों यह उत्पादन करने के लिए आवश्यक है /dev/null? आपका जवाब मूल रूप से के रूप में सटीक एक ही बात करता है यह एक

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

मैंने इसी पर्यावरण @Cupcake में आपके समाधान की कोशिश की, यह काम नहीं करता है। मुझे नहीं लगता कि यह क्यों है या तो इसका जवाब है, लेकिन जब तक मैंने इस तरह से नहीं किया, यह कभी काम नहीं किया।
nighliber

3

यदि आप पुट्टी का उपयोग कर रहे हैं, तो शायद आपको "विकल्प" को "सच" करने के लिए "कनेक्शन / एसएसएच / प्रामाणिक / अनुमति एजेंट अग्रेषित करने" की आवश्यकता है।

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


3

इसने मेरे लिए काम किया

CMD विंडो में, निम्न कमांड टाइप करें:

cd path-to-Git/bin # (for example,cd C:\Program Files\Git\bin)
bash
exec ssh-agent bash
ssh-add path/to/.ssh/id_rsa

3

विंडोज 10 में निर्मित बैश के लिए, मैंने इसे .bash_profile में जोड़ा:

if [ -z $SSH_AUTH_SOCK ]; then
    if [ -r ~/.ssh/env ]; then
            source ~/.ssh/env
            if [ `ps -p $SSH_AGENT_PID | wc -l` = 1 ]; then
                    rm ~/.ssh/env
                    unset SSH_AUTH_SOCK
            fi
    fi
fi

if [ -z $SSH_AUTH_SOCK ]; then
    ssh-agent -s | sed 's/^echo/#echo/'> ~/.ssh/env
    chmod 600 ~/.ssh/env
    source ~/.ssh/env > /dev/null 2>&1
fi

1
मुझे नहीं पता है कि अगर आप $(ssh-agent -s)एजेंट के वातावरण को सेट करने के लिए कॉल करने के लिए कह सकते हैं तो आप इतना टेक्स्ट क्यों पेस्ट करते हैं।
एरिकबवर्क

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