हर बार ssh-add टाइप करने से कैसे बचें


11

मैंने ssh- एजेंट की स्थापना करने के तरीके के बारे में कुछ ऑनलाइन दस्तावेज़ पढ़े और उनका अनुसरण किया ताकि मुझे दूरस्थ मशीन पर जाने के लिए हर बार पासवर्ड टाइप करने की आवश्यकता न पड़े।

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

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

रिमोट मशीन के लिए अपना पासवर्ड टाइप करने के बजाय, मुझे निजी कुंजी के लिए पासवर्ड टाइप करने के लिए कहा जाता है। यह एक शुद्ध से बाहर निकलने की तरह है और बाद में खुद को नरक में पाया है। ऐसा लगता है कि id_rsa केवल ssh-agent को एक सत्र में अस्थायी रूप से जोड़ा जाता है , क्योंकि हर बार जब मैं लॉग इन करता हूं और टाइप करता हूं ssh-add -l। मुझे मिला:

The agent has no identities.

क्या मैं पूछ सकता हूं कि ssh-agent में कुंजी (id_rsa) को स्थायी रूप से कैसे संग्रहीत किया जाए? धन्यवाद

संपादित करें: यह वही है जो मैंने किया था ssh-agent। मैंने निम्नलिखित ब्लॉक को जोड़ दिया~/.bash_profile

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

क्या आपका मतलब है कि जब आप लॉग इन करते हैं, या हर बार जब आप एक शेल विंडो खोलते हैं, तो आपको अपना पासफ़्रेज़ लिखना होगा। आप कहते हैं कि आपने कुछ ऑनलाइन दस्तावेज़ों का पालन किया है, लेकिन ssh- एजेंट उबंटू के बॉक्स से बाहर काम करता है, इसलिए आपको कुछ भी नहीं करना चाहिए था। आपने वास्तव में क्या किया?
गिल्स एसओ- बुराई को रोकना '

मुझे हर बार दूरस्थ मशीन में ssh पास करने के लिए पासफ़्रेज़ में लिखना पड़ता है। लेकिन यह रिमोट मशीन का उपयोग करने के लिए पासफ़्रेज़ नहीं है, यह मेरी निजी कुंजी (id_rsa) अनलॉक करने के लिए पासफ़्रेज़ है।
ssgao

मुझे पता है कि यह आपकी कुंजी का पासफ़्रेज़ है। मैं यह पूछ रहा हूं कि आपने ssh-agent को स्थापित करने के लिए क्या किया था, और क्या चल रहा ssh-addहै इसका प्रभाव शेल विंडो की तुलना में अधिक समय तक रहता है, जिसे आपने इसे टाइप किया है।
गाइल्स का SO-

प्रभाव तब तक रहता है जब तक मैं सिस्टम (स्थानीय) से लॉग आउट नहीं करता। मैंने जो कुछ किया ssh-agent, उसे पोस्ट में रखा।
ssgao

यह सामान्य व्यवहार की तरह लगता है: आपको कुंजी को अनलॉक करने के लिए प्रति सत्र एक बार अपना पासफ़्रेज़ टाइप करना होगा। यदि अनलॉक की गई कुंजी को कहीं संग्रहीत किया गया था, तो यह कुंजी पर पासफ़्रेज़ होने के उद्देश्य को पराजित करेगा - संग्रहीत अनलॉक की गई कुंजी प्राप्त करने वाला कोई भी इसका उपयोग कर सकता है। क्या आप कुछ और की उम्मीद कर रहे थे? क्या आप चाहते हैं कि आप लॉग आउट करने के बाद मेमोरी को स्टोर कर लें ताकि यह अगले रिबूट तक उपलब्ध हो?
गिल्स का SO-

जवाबों:


6

मैंने किचेन स्थापित किया है।

sudo apt-get install चाबी का गुच्छा

यदि आप bash चला रहे हैं तो आपको अपने .bash_profile में कुछ कमांड जोड़ने की आवश्यकता है यदि आपके पास .bash_profile नहीं है तो अपने होम फ़ोल्डर में एक बनाएँ। इन पंक्तियों को जोड़ें:

### START-Keychain ###
# Let  re-use ssh-agent and/or gpg-agent between logins
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
### End-Keychain ###

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


4
यह ssh-addटर्मिनल में टाइप करने से कैसे अलग है ?
ssgao

हां, लेकिन फिर आपको हर बार ssh-add टाइप करना होगा ... ऐसा करने से आपके 2 चरण कट जाएंगे -> eval "$ (ssh-agent)" और ssh-add
abhishek

1

आप जो खोज रहे हैं वह कम सुरक्षित है, लेकिन इसे ssh- एजेंट की आवश्यकता के बिना सार्वजनिक कुंजी प्रमाणीकरण का उपयोग करके पूरा किया जा सकता है। एक अधिक सुरक्षित विकल्प ssh सर्वर पर पासवर्ड प्रमाणीकरण बंद करते समय पासफ़्रेज़ के साथ सार्वजनिक कुंजी प्रमाणीकरण का उपयोग करना है, लेकिन यह वह नहीं है जो आपने माँगा था। यदि आप इसके बजाय ऐसा करने का निर्णय लेते हैं, तो निर्देशों के लिए इस उत्तर के निचले भाग में लिंक देखें।

किसी भी पासफ़्रेज़ के लिए पूछे बिना ssh का उपयोग करने के लिए, आपको पासफ़्रेज़ फ़ील्ड खाली छोड़ते समय अपनी कीपर जनरेट करना होगा।

यह जाँचने के लिए कि क्या आपने पहले से ही कोई कीपेयर जनरेट किया है, अपने ~ / / ssh डायरेक्टरी में id_rsa और id_rsa.pub फ़ाइलों की जाँच करें। यदि वे पहले से मौजूद हैं, तो आप उन्हें हटा सकते हैं या एक नया कीपर बनाने के लिए उन्हें स्थानांतरित कर सकते हैं।

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

एक नया कीपर बनाने के लिए, निम्न कमांड चलाएँ:

ssh-keygen -t rsa

कुंजियों के लिए डिफ़ॉल्ट स्थान को स्वीकार करें और पासफ़्रेज़ को खाली छोड़ दें।

Ssh सर्वर से अपनी सार्वजनिक कुंजी देने के लिए जिसे आप कनेक्ट करना चाहते हैं, निम्न कमांड का उपयोग करें:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remotehost

इन चरणों को पूरा करने के बाद, आप दूरस्थ सर्वर पर उस पासवर्ड से लॉग इन करने में सक्षम होंगे जो आप उपयोग कर रहे हैं।

संदर्भ: http://tombuntu.com/index.php/2008/02/20/public-key-authentication-for-ssh-made-easy/


0

कुछ समय पहले, मुझे अचानक से पासफ़्रेज़ के लिए कहा जाने लगा जब मैं अपनी ssh कुंजी को अनलॉक कर रहा था git push। यह पता चला कि एक पासफ़्रेज़ के लिए कहा जाना बंद करने के लिए यह SSH कुंजी एजेंट (GNOME कीरिंग: SSH एजेंट) को स्टार्टअप एप्लिकेशन (मेरे मामले में - बस चेकबॉक्स को चेक करने के लिए) को जोड़ने के लिए पर्याप्त था:

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


क्या आप कृपया अपने उत्तर का विस्तार अधिक विस्तार से कर सकते हैं कि ऐसा कैसे करें और यह प्रश्न में समस्या का समाधान क्यों करेगा? धन्यवाद।
बाइट कमांडर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.