Git मुझसे ssh कुंजी पासफ़्रेज़ के लिए पूछती रहती है


537

मैंने गितुब ट्यूटोरियल में निर्देश के अनुसार चाबियाँ बनाईं, उन्हें गितुब के साथ पंजीकृत किया, और एसश-एजेंट का स्पष्ट रूप से उपयोग करने की कोशिश की - फिर भी गिट हर बार मेरे पासफ़्रेज़ के लिए मुझसे पूछते रहते हैं जब भी मैं एक पुल या एक पुश करने की कोशिश करता हूं।

क्या कारण हो सकता है?


जवाबों:


1038

एक बार जब आप SSH एजेंट के साथ शुरू कर दिया है:

eval $(ssh-agent)
  1. आपको इसमें अपनी निजी कुंजी जोड़नी होगी:

    ssh-add
    

    यह आपसे आपके पासफ़्रेज़ को केवल एक बार पूछेगा, और फिर आपको धक्का देने की अनुमति दी जानी चाहिए, बशर्ते कि आपने सार्वजनिक कुंजी गिथब को अपलोड कर दी हो।

  2. MacOS पर स्थायी रूप से कुंजी सहेजने के लिए:

    ssh-add -K  
    

    आपके द्वारा इसे बंद करने और उपयोगकर्ता के किचेन में संग्रहीत करने के बाद इसे दोबारा खोलने पर यह जारी रहेगा।


16
सर्वर से लॉग-आउट, ssh बैक इन, रन git pull, मुझे फिर से पासवर्ड के लिए संकेत दें।
सायबर 8200

35
ssh-add -Kआप इसे बंद करने के बाद इसे जारी रखेंगे और इसे उपयोगकर्ता के किचेन में संग्रहीत करके फिर से खोलेंगे।
कर्क

72
@ किर्क ssh-add -Kनिम्नलिखित देता है:unknown option -- K usage: ssh-add [options] [file ...] Options: -l List fingerprints of all identities. -L List public key parameters of all identities. -k Load only keys and not certificates. -c Require confirmation to sign using identities -t life Set lifetime (in seconds) when adding identities. -d Delete identity. -D Delete all identities. -x Lock agent. -X Unlock agent. -s pkcs11 Add keys from PKCS#11 provider.
संदीप C

13
मुझे अभी भी परवाह किए बिना पासफ़्रेज़ के लिए संकेत मिलता है।
इगोरगानापोलस्की

21
-Kसेब विशिष्ट है। सहायता देखें। Github.com/articles/…
bkdir

238

OS X El Capitan (10.11) से macOS Sierra (10.12) में अपग्रेड करने के बाद से यह मेरे लिए शुरू हुआ है। ssh-addसमाधान अस्थायी रूप से काम किया लेकिन एक और पुनः आरंभ में मौजूद नहीं होगा।

स्थायी समाधान विकल्प को संपादित करना (या बनाना) ~/.ssh/configऔर सक्षम करना UseKeychainथा।

Host *
    UseKeychain yes

संबंधित: macOS मेरे ssh पासफ़्रेज़ के बारे में पूछता रहता है क्योंकि मैंने सिएरा को अपडेट किया है


1
मेरे लिए काम किया धन्यवाद ... मैंने किया था ... ssh-add -K /Users/***/.ssh/git/id_rsaलेकिन टर्मिनल पुनरारंभ होने के बाद भी यह काम नहीं कर रहा था ... धन्यवाद।
nawlbergs

2
ऐसा क्यों करना चाहते हैं? OpenSSH परिवर्तनों पर तकनीकी नोट पढ़ें डेवलपर
.apple.com

62

यदि आपने कोशिश की है ssh-addऔर आपको अभी भी अपना पासफ़्रेज़ दर्ज करने का संकेत दिया गया है, तो उपयोग करने का प्रयास करेंssh-add -K । यह आपके किचेन में अपना पासफ़्रेज़ जोड़ता है।

अद्यतन: यदि आप macOS सिएरा का उपयोग कर रहे हैं, तो आपको संभवतः एक और कदम करने की आवश्यकता है क्योंकि उपरोक्त अब काम नहीं कर सकता है। निम्नलिखित को अपने में जोड़ें ~/.ssh/config:

Host *
  UseKeychain yes

2
फिर भी मुझे पासफ़्रेज़ के लिए प्रेरित करता है।
इगोरगानापोलस्की

@IgorGanapolsky आप macOS सिएरा का उपयोग कर रहे हैं? यदि हां, तो जांच लें कि मैंने उत्तर में क्या जोड़ा है। मुझे आशा है कि वह मदद करेंगे।
डैरिल यंग

2
हां, मैं सिएरा पर हूं। हालाँकि, यहाँ वह लाइन है जो मेरे लिए भी काम करती है: AddKeysToAgent Yes
IgorGanapolsky

1
यह BitBucket Cloud के साथ भी काम करता है। मैं GitKraken में मुद्दे रख रहा था और इसने मेरे मुद्दों को हल किया।
मलची

54

मैं निम्नलिखित कोशिश करूँगा:

  1. GitBash शुरू करें
  2. अपनी ~/.bashrcफ़ाइल संपादित करें
  3. निम्न पंक्तियों को फ़ाइल में जोड़ें

SSH_ENV=$HOME/.ssh/environment

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn 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
}

if [ -f "${SSH_ENV}" ]; then
     . ${SSH_ENV} > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi
  1. फ़ाइल को सहेजें और बंद करें
  2. GitBash को बंद करें
  3. रोपेन गिटबश
  4. अपना पासफ़्रेज़ दर्ज करें

4
भविष्य के संदर्भ के लिए, यह भी साथ काम करता है zsh। बस इसे जोड़ें.zshrc
Arda

2
मेरा मानना ​​है कि यह आपकी कीफाइल कहा जाता है id_rsa। यदि आपके पास एक कस्टम नाम है, तो आपको उदाहरण के लिए उपयोग करना चाहिए। /usr/bin/ssh-add ~/.ssh/custom_filename
जूहा अनटाइनन

2
क्या आप बता सकते हैं कि इस लिपि का क्या होगा?
लीआर

2
@ यदि यह ssh- एजेंट को शुरू करता है यदि पहले से ही नहीं चल रहा है, जो कि आपको हर पुश (अधिक या कम) पर ssh पासफ़्रेज़ नहीं पूछना सुनिश्चित करता है।
रोलैंड

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

27

विंडोज पर मेरे लिए क्या काम किया गया था (मैंने रेपो 1 से कोड क्लोन किया था):

eval $(ssh-agent)
ssh-add 
git pull 

किस समय इसने मुझसे अपने पासफ़्रेज़ के लिए एक आखिरी बार पूछा

क्रेडिट: समाधान /unix/12195/how-to-avoid-being-asked-passphrase-each-time-i-push-to-bitbucket से लिया गया था


27

इसे अपने ~ /। Ssh / config में जोड़ने का प्रयास करें :

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

... अपनी निजी कुंजी मानने का नाम id_rsa है


11
UseKeychain हाँ केवल मैक के लिए मान्य है
Oz123

3
@ Oz123 खिड़कियों के लिए बराबर है
इगोरगानपोलस्की

@ Oz123 मुझे लगता है कि विंडोज पर बराबर AddKeysToAgent है इस उत्तर की जांच करें stackoverflow.com/questions/52423626/…
fedeteka

6

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

यह पता चला है कि मेरे पास कई चाबियाँ थीं और गिट पहले गलत का उपयोग कर रहे थे। यह मुझे मेरे पासफ़्रेज़ के लिए संकेत देगा, और मैं इसे दर्ज करूँगा, फिर गिट एक अलग कुंजी का उपयोग करेगा जो काम करेगा (कि मुझे पासफ़्रेज़ में प्रवेश करने की आवश्यकता नहीं है)।

मैंने बस उस कुंजी को हटा दिया था जिसका उपयोग वह मुझे पासफ़्रेज़ के लिए संकेत देने के लिए कर रहा था और अब यह काम करता है!


5

ऐसा लगता है कि आप खुद SSH-Agent से परेशान हो रहे हैं। मैं उस समस्या निवारण की कोशिश करूंगा।

1) क्या आपने SSH में अपनी कुंजी जोड़ने के लिए ssh-add किया?

2) क्या आप उपयोग के बीच टर्मिनल विंडो को बंद कर रहे हैं, क्योंकि यदि आप विंडो को बंद करते हैं तो आपको इसे फिर से खोलने पर पासवर्ड फिर से दर्ज करना होगा।


2
पहली समस्या जेफ वेलिंग को हल करने के तरीके के बारे में जानकारी जोड़ना अच्छा होगा।
रानू

5

यदि उपरोक्त समाधान मेरे लिए काम नहीं कर रहे हैं, तो जांच करने के लिए एक बात यह है कि आपके पास वास्तव में सार्वजनिक कुंजी भी है (आमतौर पर id_rsa.pub )। यह असामान्य नहीं है, लेकिन यही मेरे लिए कारण था।

अपनी निजी कुंजी से अपनी सार्वजनिक कुंजी बनाने के लिए:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

1

मैं विभिन्न समाधानों की कोशिश करता हूं लेकिन कुछ भी मदद नहीं करता है। लेकिन यह कदम ( मेरा GitBash SSH वातावरण हमेशा मेरे पासफ़्रेज़ के लिए पूछता है, मैं क्या कर सकता हूं? ) Bitbucket.com से तेजी से काम करता है:

विचार यह है:

  1. आप ~/.bashrcफ़ाइल बनाएँ

  2. फॉलो स्क्रिप्ट जोड़ें:

    SSH_ENV=$HOME/.ssh/environment
    
    # start the ssh-agent
        function start_agent {
        echo "Initializing new SSH agent..."
        # spawn 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
    }
    
    if [ -f "${SSH_ENV}" ]; then
         . "${SSH_ENV}" > /dev/null
         ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
            start_agent;
        }
    else
        start_agent;
    fi
    
  3. बैश को फिर से चलाना


1

एक और संभावित समाधान जो ऊपर उल्लिखित नहीं है, वह निम्नलिखित कमांड के साथ आपके रिमोट की जांच करना है:

git remote -v

यदि रिमोट git से शुरू नहीं होता है, लेकिन https से शुरू होता है, तो आप नीचे दिए गए उदाहरण का अनुसरण करके इसे git में बदलना चाहते हैं।

git remote -v // origin is https://github.com/user/myrepo.git
git remote set-url origin git@github.com:user/myrepo.git
git remote -v // check if remote is changed
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.