मैं स्थायी रूप से SSH के लिए एक पहचान कैसे जोड़ूं?


37

मुझे ssh-add <key>हर समय मुझे एक वेबसर्वर में ssh करने की आवश्यकता है। क्या आईडी को स्थायी रूप से जोड़ने का कोई तरीका है, इसलिए मुझे प्रत्येक लॉगिन पर पहचान जोड़ने के लिए नहीं है?

EDIT: कुंजी एक pem फ़ाइल है, जिसे मैंने क्लाउड सेवा से डाउनलोड किया है।

जवाबों:


40

सामान्य की तरह अपनी कुंजी उत्पन्न करें: ssh-keygenफिर उस कुंजी को दूरस्थ सर्वर के साथ रखें ssh-copy-id, जो इसे दूरस्थ सर्वर की स्वीकृत कुंजी के साथ सिंक करेगा।

ssh-keygen
ssh-copy-id user@host

यह आपके पासवर्ड के लिए संकेत देगा, फिर अपनी .pubकुंजी को दूरस्थ SSH सर्वर से लिंक करने के लिए आवश्यक सभी चरणों का प्रदर्शन करें।

डिफ़ॉल्ट रूप से यह आपकी सभी .pub कुंजियों को दूरस्थ सर्वर पर कॉपी कर देगा। यदि आपने अभी अपनी कुंजी बनाई है ssh-keygenतो यह कोई समस्या नहीं है (क्योंकि आपके पास केवल एक है!)। हालाँकि, यदि आपके पास कई कुंजियाँ हैं, तो आप -iध्वज के साथ एक विशिष्ट कुंजी कॉपी कर सकते हैं ।

ssh-copy-id -i ~.ssh/key_name.pub user@host

key_name.pubकुंजी के नाम के साथ प्रतिस्थापित करना।


4
मेरे जैसे किसी व्यक्ति के लिए (या प्रश्न पूछने वाला), जिसका केवल ssh के लिए एक्सपोज़र क्लाउड-होस्टेड सर्वर तक पहुँचने के लिए इसका उपयोग कर रहा है, जहाँ वेब सेवा कुंजी बनाती है और मुझे देती है (मेरे मामले में, AWS सर्वर), यह उत्तर कठिन है कुछ महत्वपूर्ण पृष्ठभूमि अनुसंधान किए बिना समझें। मैंने कभी उपयोग नहीं किया है ssh-keygenया ssh-copy-id, उदाहरण के लिए। दूसरी ओर, इस तरह के जवाब मेरे ज्ञान के स्तर को देखते हुए मेरे लिए बिल्कुल स्पष्ट और उपयोगी हैं। आपके ऊपर कि क्या आप मेरे जैसे अज्ञानी लोगों की मदद करने के लिए किसी भी तरह से अपना जवाब देना चाहते हैं। :)
मार्क अमेरी

उत्तर मानता है कि मैं एक नई कुंजी उत्पन्न करना चाहता हूं। क्या होगा यदि मैं कीरिंग के साथ एक मौजूदा कुंजी दर्ज करना चाहता हूं?
दान

@donquixote: उपयोगकर्ता 626052 द्वारा नीचे दिए गए उत्तर को देखें
n

7

आप कमांड के साथ एक ssh कुंजी उत्पन्न कर सकते हैं:

ssh-keygen

फिर आप सर्वर पर अपनी कुंजी कॉपी कर सकते हैं:

ssh serveruser@servername "echo `cat ~/.ssh/id_dsa.pub` >> ~/.ssh/authorized_keys" 

अब आप स्वचालित रूप से अपने वेबसर्वर में लॉग इन कर सकते हैं


1
चिकित्सा सर्वर की कुंजी की प्रतिलिपि बनाने के लिए आप बस ssh-copy-id -i ~/.ssh/id_dsa.pub serveruser@servernameया ~/.ssh/id_rsa.pubक्रमशः उपयोग कर सकते हैं। वास्तव में, यदि आप कुंजी फ़ाइल के लिए डिफ़ॉल्ट नाम का उपयोग करते हैं तो आपको इसे निर्दिष्ट करने की आवश्यकता नहीं है।
कार्स्टन थिएल

5

यह अपने में रखो ~/.bashrc

eval $(ssh-agent)
ssh-add ~/.ssh/where_ever_privake_key_is 

3
यह एकमात्र उत्तर है जो वास्तविक प्रश्न का उत्तर देता है। अन्य लोग केवल एक ही लक्ष्य सर्वर में डिफ़ॉल्ट सार्वजनिक कुंजी जोड़ रहे हैं, जो सर्वर के विभिन्न सेटों के लिए दो + अलग होने पर कष्टप्रद है।
n

3

यदि आपकी कुंजी पासवर्ड-कम है और किसी एक फ़ाइल के रूप में नामित ssh को पहचानने के लिए देखने की कोशिश करेंगे ( ~/.ssh/id_dsaया ~/.ssh/id_rsa), तो आपको इसे अपने एजेंट में नहीं जोड़ना चाहिए।

परंतु। यदि उन फ़ाइलों के चोरी होने की थोड़ी सी भी संभावना है, तो आप किसी को भी उन सर्वरों का उपयोग करने की अनुमति देंगे, जिन पर आप इस पहचान का उपयोग कर रहे हैं। संक्षेप में, pwned।

IMHO, पासवर्ड-कम निजी कुंजी एक बुरा अभ्यास है, और इसका उपयोग केवल उन वातावरणों पर किया जाना चाहिए जहां ~/.ssh/authorized_keysबहुत प्रतिबंधक है।


1
ssh- एजेंट आपकी डिक्रिप्ट की गई निजी कुंजी को रख सकता है, जब आप लॉग इन होते हैं। यदि सक्षम है, तो सूक्ति-कीरिंग भी आपके लॉगिन पासवर्ड का उपयोग कर सकते हैं। ओह, और ssh-copy-id आपकी सार्वजनिक कुंजी को सर्वरों पर भी कॉपी कर सकता है।
फ्रैंक

2

एक छोटी शेल स्क्रिप्ट लिखें जो ssh-add चलाएगी और फिर निम्नलिखित जैसे कनेक्ट करेगी:

ssh-add ~/.ssh/your-key
ssh user@remotehost

आप एक आदेश के साथ अपने मेजबान में ssh कर सकते हैं।


1

AWS के लिए, pem कुंजी डाउनलोड करें और चलाएं:

ssh-add /path/to/pemfile.pem

मेरे लिए काम किया, ubuntu 18.04। स्रोत , और कुछ नहीं चाहिए था।

NB : हालाँकि, ऐसा करने से पहले अनुमतियों को 400 पर सेट करना महत्वपूर्ण है।

chmod 400 /path/to/pemfile.pem

यदि आपको कोई त्रुटि नहीं मिलेगी:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@ @ चेतावनी: गैरकानूनी रूप से प्रमाणित प्रमुख फ़ाइल! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ अनुमतियाँ ६/६४ '/home/toing_toing/blablabla.pem' के लिए भी खुली हैं। यह आवश्यक है कि आपकी निजी कुंजी फाइलें दूसरों द्वारा सुलभ न हों। इस निजी कुंजी को अनदेखा किया जाएगा।



-2

क्या आप अमेज़न क्लाउड के बारे में बात कर रहे हैं? अपने ~ / .bashrc में, पर्यावरण चर बनाएं:

# Amazon
export EC2_PRIVATE_KEY=$HOME/Keys/pk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
export EC2_CERT=$HOME/Keys/cert-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/

हाँ, मैं बादल के बारे में बात करते हैं, लेकिन इस स्थिति में ssh की कुंजी जोड़ी है, और इसके बाद के संस्करण वातावरण चर api-उपकरणों का उपयोग करने के लिए आवश्यक हैं :)
theTuxRacer

ठीक है। इसलिए बिना पासवर्ड वाले RSA कुंजी उत्पन्न करें: 'ssh-keygen -t rsa' और उसके बाद जनरेट की गई कुंजी (~ / .ssh / id_dsa.pub) को रिमोट सर्वर की ~ / .Ssh या अधिकृत_कीज फ़ाइल में जमा करें। इसे पूरा करने के लिए एक लाइनर कई द्वारा दिया गया था।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.