आप SSH का उपयोग कर रहे हैं और अपनी निजी कुंजी किसी पासफ़्रेज़ से एन्क्रिप्ट है, तो आप अभी भी निजी कुंजी के लिए पदबंध / पासवर्ड दर्ज करने के लिए संकेत दिया जाएगा जब आप Git के साथ नेटवर्क संचालन कर की तरह push
, pull
है, और fetch
।
निजी कुंजी पासफ़्रेज़ / पासवर्ड क्रेडेंशियल्स को बचाने के लिए ssh-Agent का उपयोग करें
यदि आप हर बार अपना पासफ़्रेज़ दर्ज करने से बचना चाहते हैं, तो आप ssh-agent
टर्मिनल सत्र के अनुसार एक बार अपनी निजी कुंजी पासफ़्रेज़ क्रेडेंशियल्स को संग्रहीत करने के लिए उपयोग कर सकते हैं , जैसा कि मैं अपने उत्तर में समझाता हूं कि आपके प्रमाणीकरण एजेंट के लिए कनेक्शन नहीं खोला जा सकता है :
$ eval `ssh-agent -s`
$ ssh-add
Windows msysgit Bash में, आपको के आउटपुट का मूल्यांकन करने की आवश्यकता है ssh-agent
, लेकिन मुझे यकीन नहीं है कि आपको अन्य विकास परिवेशों और ऑपरेटिंग सिस्टम में भी ऐसा करने की आवश्यकता है।
ssh-add
आपके घर के .ssh
फ़ोल्डर में एक निजी कुंजी के लिए कहा जाता हैid_rsa
जाती है, जिसे डिफ़ॉल्ट नाम है, लेकिन आप एक फ़ाइलपैथ को एक अलग नाम से कुंजी में पास कर सकते हैं।
एजेंट को मारना
जब आप अपने टर्मिनल सत्र के साथ कर रहे हैं, तो आप ssh-agent
मार झंडे के साथ बंद कर सकते हैं -k
:
$ ssh-agent -k
जैसा कि ssh-agent
मैनुअल में बताया गया है :
-k
वर्तमान एजेंट को मारें (SSH_AGENT_PID पर्यावरण चर द्वारा दिया गया)।
वैकल्पिक समयबाह्य
इसके अलावा, यह एक वैकल्पिक टाइमआउट पैरामीटर ले सकता है जैसे:
$ ssh-add -t <timeout>
जहां <timeout>
स्वरूप की है <n>h
के लिए <n>
घंटे, <n>m
के लिए <n>
मिनट, और इतने पर।
ssh-agent
मैनुअल के अनुसार :
-t life
एजेंट को जोड़े गए अधिकतम जीवनकाल के लिए डिफ़ॉल्ट मान सेट करें। जीवनकाल सेकंड में या sshd_config (5) में निर्दिष्ट समय प्रारूप में निर्दिष्ट किया जा सकता है । Ssh-add (1) के साथ एक पहचान के लिए निर्दिष्ट जीवनकाल इस मूल्य को ओवरराइड करता है। इस विकल्प के बिना डिफ़ॉल्ट अधिकतम जीवनकाल हमेशा के लिए है।
अधिक समय प्रारूपों के लिए इस पृष्ठ को देखें ।
Cygwin उपयोगकर्ताओं के लिए सुरक्षा चेतावनी
Cygwin में ssh- एजेंट का उपयोग करने के साथ Cygwin उपयोगकर्ताओं को संभावित सुरक्षा जोखिम के बारे में पता होना चाहिए :
लोगों को Cygwin 1 के तहत ssh- एजेंट के संभावित खतरों का संज्ञान होना चाहिए , हालांकि एक स्थानीय नेटस्टैट और रिमोट पोर्ट्सकैन के तहत ऐसा नहीं लगता कि पोर्ट / tmp / ssh-foo में निर्दिष्ट पोर्ट किसी के लिए भी सुलभ है ...?
[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html
और उद्धृत लिंक पर :
हालाँकि, ध्यान दें कि Cygwin के Unix डोमेन सॉकेट्स FUNDAMENTALLY INSECURE हैं और इसलिए मैं Cygwin के तहत ssh- Agent के उपयोग को दृढ़ता से अस्वीकार करता हूं ।
जब आप Cygwin के तहत ssh-Agent चलाते हैं तो यह /tmp/ssh-$USERNAME/
निर्देशिका में AF_UNIX सॉकेट बनाता है । Cygwin के तहत AF_UNIX सॉकेट्स AF_INET सॉकेट्स के माध्यम से अनुकरण किए जाते हैं। आप आसानी से देख सकते हैं कि यदि आप /tmp/ssh-$USERNAME/agent-socket-*
नोटपैड के माध्यम से फाइल देखेंगे । आपको कुछ ऐसा दिखाई देगा
!<socket >2080
फिर भागो netstat -a
और आश्चर्य! आपके पास 2080 को पोर्ट करने के लिए कुछ कार्यक्रम है। यह ssh- एजेंट है। जब ssh सर्वर से RSA चुनौती प्राप्त करता है, तो यह संबंधित /tmp/ssh-$USERNAME/agent-socket-*
(Cygwin के तहत, हमारे मामले में, इसका मतलब है कि इसका कनेक्शन खुलेगा localhost:2080
) और ssh- एजेंट को RSA चुनौती को उस निजी कुंजी के साथ संसाधित करने के लिए कहता है, और फिर यह बस ssh- एजेंट से प्राप्त प्रतिक्रिया को सर्वर से पास करता है।
यूनिक्स के तहत, ऐसा परिदृश्य समस्याओं के बिना काम करता है, क्योंकि यूनिक्स कर्नेल अनुमतियों की जांच करता है जब प्रोग्राम एक AF_UNIX सॉकेट तक पहुंचने का प्रयास करता है। AF_INET सॉकेट्स के लिए, हालांकि, कनेक्शन अनाम हैं ("असुरक्षित" पढ़ें)। कल्पना करें, कि आपके पास Cygwin ssh-Agent चल रहा है। एक दुर्भावनापूर्ण हैकर आपके बॉक्स को पोर्ट कर सकता है, ssh- एजेंट द्वारा उपयोग किए जाने वाले खुले पोर्ट का पता लगा सकता है, अपने SSH सर्वर से एक कनेक्शन खोल सकता है, उससे RSA चुनौती प्राप्त कर सकता है, उसे आपके ssh- एजेंट को एक खुले पोर्ट के माध्यम से भेज सकता है जो उसने पाया / प्राप्त किया, RSA प्रतिक्रिया, इसे SSH सर्वर और वॉइला को भेजें, उसने आपके सर्वर पर सफलतापूर्वक आपके रूप में लॉग इन किया।