एक बार SSH पासफ़्रेज़ दर्ज करें


124

अपग्रेड करने से पहले

जब मैं चल रहा था git clone git@...(ssh का उपयोग करके) एक बार कंप्यूटर के अनुसार एक विंडो संवाद फिर से शुरू हुआ जिसमें मेरा SSH पासफ़्रेज़ डालने के लिए एक टेक्स्टबॉक्स था और ओके के साथ इसकी पुष्टि हुई। तब पासफ़्रेज़ की आवश्यकता मेरे सिस्टम की अगली शुरुआत तक नहीं थी।

13.10 में अपग्रेड करने के बाद

उबंटू 13.10 में अपग्रेड करने के बाद वह विंडो दिखाई नहीं देती है लेकिन टर्मिनल में एक संदेश दिखाई देता है:

Enter passphrase for key '/home/username/.ssh/id_rsa': 

... हर बार जब एक गिट रिपॉजिटरी की क्लोनिंग होती है तो ऐसा प्रतीत होता है।

मैं इसे कैसे ठीक करूं? मैं केवल एक बार अपना पासफ़्रेज़ दर्ज करना चाहता हूं।


1
मुझे लगता है कि आपको इसके लिए ssh-addकमांड का उपयोग करना होगा । या तुमने कोशिश की?
डेविस

2
मैंने ssh-agent bash+ कोशिश की ssh-add। यह केवल कुछ मिनटों के लिए काम करता है।
आयनॉकि बिज़ुउ

मुझे एक ही समस्या है। मुझे लगता है कि यह OpenSSH के ssh- एजेंट और गनोम कीरिंग डेमॉन के बीच संघर्ष हो सकता है।
11


2
जोड़े AddKeysToAgent yes.ssh को / config मेरे लिए काम करता है।
xllittlegrass

जवाबों:


138

अद्यतन: 13.10 से एक बग प्रतीत होता है:

https://bugs.launchpad.net/ubuntu/+source/libpam-ssh/+bug/1247169


वैसे भी निम्नलिखित कमांड चलाने से समस्या मेरे लिए ठीक हो गई थी:

कैसे ठीक करना है

मैंने निम्नलिखित कमांड दर्ज करके इसे ठीक किया:

$ ssh-agent bash

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

और तब:

$ ssh-add /home/username/.ssh/id_rsa
Enter passphrase for /home/username/.ssh/id_rsa: 
Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)

... usernameआपका उपयोगकर्ता नाम कहां है आप $USERवैरिएबल का उपयोग करके भी ऐसा कर सकते हैं :

$ ssh-add /home/$USER/.ssh/id_rsa

वैकल्पिक रूप से, बस ~अपने घर निर्देशिका के लिए उपयोग करें।

$ ssh-add ~/.ssh/id_rsa

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


47
यह समस्या को हल नहीं करता है। यह केवल तब तक एजेंट से पहचान जोड़ता है जब तक आप टर्मिनल से बाहर नहीं निकल जाते। यदि आप एक नया टर्मिनल खोलते हैं तो आपको ssh-addफिर से करना होगा।
devius

@devius हाँ, बग लगता है। लेकिन, ऊपर दिए गए आदेशों ने मेरी समस्या तय कर दी ...
Ionică Bizău

3
तो स्पष्ट करने के लिए: इस "फिक्स" के साथ आपको केवल उस टर्मिनल में पासफ़्रेज़ में टाइप करना नहीं होगा। जिस क्षण आप एक नया टर्मिनल खोलेंगे - आपको फिर से पासफ़्रेज़ देना होगा।
हैजय

9
मैंने $ ssh-add /home/username/.ssh/id_rsa(बिना ssh-agent bash) कोशिश की और टर्मिनल को फिर से खोलने के बाद भी मेरे लिए काम किया। लेकिन मेरे लिए पूर्ण समाधान यह एक stackoverflow.com/a/4246809/532252 था । मशीन को रिबूट करने के बाद भी सब कुछ ठीक है।
किशी

1
मैंने अभी टर्मिनल में ssh-add टाइप किया है।
Ssh-

39

0) लघु उत्तर

.ssh/configशुरुआत में अपनी एक पंक्ति में जोड़ें :

AddKeysToAgent yes

और git / ssh / चलाएँ ... यदि यह पर्याप्त नहीं है, तो अपने ssh संस्करण की जाँच करें और जाँचें कि ssh- एजेंट इन निर्देशों के साथ भरा हुआ है:

1) ओपनश संस्करण की जाँच करें

सबसे पहले जाँचें कि आपका ssh संस्करण, यह 7.2 के बराबर होना चाहिए :

ssh -V

2) कॉन्फिग फाइल को एडिट करें

यदि ऐसा है .ssh/configतो शुरुआत में ही अपनी एक पंक्ति में जोड़ें :

AddKeysToAgent yes

3) जाँच करें कि क्या ssh- एजेंट पहले से खुला है

आमतौर पर वितरण स्वचालित रूप से एक ssh- एजेंट को लोड करते हैं। इसे जांचने के लिए, भागो

ps aux | grep -v grep | grep ssh-agent

यदि आपको कोई रेखा दिखाई नहीं देती है, तो आपको उसे चलाकर लोड करना होगा:

eval $(ssh-agent)

ध्यान दें कि यह एजेंट को केवल वर्तमान टर्मिनल पर सक्षम करता है, इसलिए इसे हर जगह सक्षम करने के लिए, आप अपनी ~/.profileफ़ाइल में इस लाइन को जोड़ने और रिबूट करने का प्रयास कर सकते हैं ।


11
AddKeysToAgent yes2016 के बाद का जवाब है - और वास्तव में अधिकांश आधुनिक उपयोगकर्ता इसके बारे में क्या कर रहे हैं। यह 2017 के मध्य में है। उबंटू> = 16.04 ( एक्सनियल ज़ेरुस ) अब एक उचित धारणा है। जंगली में अधिकांश ओपनएसएसएच संस्थापन अब इस विकल्प का समर्थन करते हैं। इस प्रश्न के हर दूसरे उत्तर की वकालत करने वाले इस तरह के एड-हॉक शेल स्क्रिप्ट के कल्ज हैं ... पास</sigh>
सेसिल करी

2
यह स्वीकार किए जाते हैं जवाब होना चाहिए
simernes

32

इस एटलसियन दस्तावेज ने Ubuntu 14.04 सर्वर संस्करण पर मेरे लिए यह मुद्दा तय किया:

इस मान को अपनी .bashrcफ़ाइल में जोड़ें :

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

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


2
यह अन्य डिस्ट्रोस पर काम करने लगता है, जैसे मैंने सबयोन लिनक्स पर इस उत्तर का सफलतापूर्वक उपयोग किया है।
BH2017

1
धन्यवाद! इस समाधान ने मेरे लिए एक ubuntu प्रणाली पर काम किया, जहां गुंबद-कीमोन-डेमन डब-डेमॉन मुद्दों के कारण काम नहीं करता था। विशेष रूप से, मुझे ये त्रुटियां मिल रही थीं "** संदेश: dbus सेशन बस से कनेक्ट नहीं हो सका: X11 के लिए $ DISPLAY के बिना एक dbus-डेमन को स्वतः प्रदर्शित करने में असमर्थ" और प्रदर्शन वातावरण चर सेट करने के बाद मुझे "** संदेश: "dbus सत्र बस से कनेक्ट न करें: // बिन / dbus- लॉन्च असामान्य रूप से निम्न त्रुटि के साथ समाप्त हो गया: ऑटोलांच त्रुटि: X11 आरंभीकरण विफल।"
user207863

1
यह अधिक upvotes की जरूरत है, वर्चुअलाइज्ड Ubuntu 16.04 ठीक पर समस्या को ठीक करता है।
नील्स केयूरेंटजेस

3
यह मेरे लिए Bash on Windows के लिए भी समस्या को ठीक करता है। मैंने कई बार बैश को लॉन्च करने की कोशिश की और इसे पासफ़्रेज़ याद आया। अभी तक पुनः आरंभ करने की कोशिश नहीं की गई है।
अमृत

2
अन्य सभी समाधानों की कोशिश करने के बाद, इसने मेरे लिए काम किया। यह ओपी का समाधान होना चाहिए
जोओ पिमेंटेल फरेरा

20

इस बग के लिए वर्कअराउंड निम्न में जोड़ना है~/.bashrc

eval `gnome-keyring-daemon --start`

2
नहीं सूक्ति कीरिंग सिर्फ अपने सत्र का हिस्सा होना चाहिए?
पावेल Paमेरडा

1
अगर आप 'चाहिए' के ​​बारे में बात कर रहे हैं, तो यह सवाल यहाँ पहली जगह पर नहीं होना चाहिए, अगर सब कुछ सही है
अनवर

1
यकीन नहीं है कि अगर यह संबंधित है .bashrc। लगता है कि आपको इसे कुछ DE प्रोफ़ाइल फ़ाइल में जोड़ना होगा
दिमित्री गिंजबर्ग

3

मछली के खोल के उपयोगकर्ता इस स्क्रिप्ट का उपयोग उसी कार्य को करने के लिए कर सकते हैं ।

# content has to be in .config/fish/config.fish
# if it does not exist, create the file
setenv SSH_ENV $HOME/.ssh/environment

function start_agent                                                                                                                                                                    
    echo "Initializing new SSH agent ..."
    ssh-agent -c | sed 's/^echo/#echo/' > $SSH_ENV
    echo "succeeded"
    chmod 600 $SSH_ENV 
    . $SSH_ENV > /dev/null
    ssh-add
end

function test_identities                                                                                                                                                                
    ssh-add -l | grep "The agent has no identities" > /dev/null
    if [ $status -eq 0 ]
        ssh-add
        if [ $status -eq 2 ]
            start_agent
        end
    end
end

if [ -n "$SSH_AGENT_PID" ] 
    ps -ef | grep $SSH_AGENT_PID | grep ssh-agent > /dev/null
    if [ $status -eq 0 ]
        test_identities
    end  
else
    if [ -f $SSH_ENV ]
        . $SSH_ENV > /dev/null
    end  
    ps -ef | grep $SSH_AGENT_PID | grep -v grep | grep ssh-agent > /dev/null
    if [ $status -eq 0 ]
        test_identities
    else 
        start_agent
    end  
end


0

यदि आप azure .ppk फ़ाइल का उपयोग करते हैं

बस इसे pem में बदलें और साधारण चरणों के साथ अनुमति 400 जोड़ें:

sudo apt-get install putty
puttygen <path_to_key>/keyname.ppk -O private-openssh -o <path>/aws_key.pem
sudo chmod 400 <path>/aws_key.pem
ssh -vi aws_key.pem ubuntu@<ip_address>

0

उबंटू 18.04 पर, सत्र X को खोलने पर ssh- एजेंट शुरू हो जाता है, इसे फ़ाइल /etc/X11/Xsession.options में प्रबंधित किया जाता है:

# cat /etc/X11/Xsession.options
# $Id: Xsession.options 189 2005-06-11 00:04:27Z branden $
#
# configuration options for /etc/X11/Xsession
# See Xsession.options(5) for an explanation of the available options.
allow-failsafe
allow-user-resources
allow-user-xsession
use-ssh-agent
use-session-dbus
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.