जवाबों:
प्रत्येक उपयोगकर्ता के लिए: वे (उनके स्थानीय मशीन पर) उत्पन्न करनी चाहिए उनके कुंजीयुग्म का उपयोग कर ssh-keygen -t rsa
( rsa
साथ बदला जा सकता dsa
है या rsa1
भी है, हालांकि उन विकल्पों की सिफारिश नहीं कर रहे हैं)। फिर उन्हें अपनी सार्वजनिक कुंजी ( id_rsa.pub
) की सामग्री ~/.ssh/authorized_keys
को सर्वर पर लॉग इन करने की आवश्यकता होती है।
मैं वास्तव में ssh-copy-id पसंद करता हूं , एक स्क्रिप्ट जो डिफ़ॉल्ट रूप से * निक्स पर मिलती है ( मैक ओएस एक्स पर आसानी से पर्याप्त रूप से अच्छी तरह से रखी जा सकती है ) जो स्वचालित रूप से आपके लिए ऐसा करती है। मैन पेज से:
ssh-copy-id एक स्क्रिप्ट है जो किसी दूरस्थ मशीन में लॉग इन करने के लिए ssh का उपयोग करता है (संभवतः लॉगिन पासवर्ड का उपयोग करता है, इसलिए पासवर्ड प्रमाणीकरण को सक्षम किया जाना चाहिए, जब तक कि आपने कई पहचान का चतुर उपयोग नहीं किया हो)
यह दूरस्थ उपयोगकर्ता के घर की अनुमतियों को भी परिवर्तित करता है, ~ / .sh, और ~ / .ssh / प्राधिकृत_के लिए समूह लेखन क्षमता को हटाता है (जो अन्यथा आपको लॉग इन करने से रोकेगा, यदि दूरस्थ sshd के पास इसके विन्यास में StrictModes सेट है)।
यदि -i विकल्प दिया जाता है, तो पहचान फ़ाइल (~ / .ssh / पहचान.पब के लिए डिफॉल्ट) का उपयोग किया जाता है, भले ही आपके ssh- एजेंट में कोई कुंजी हो या न हो।
हम, यह नहीं मिलता है। बस एक कुंजी बनाएं और आरंभ करें। :) HOWTO Additionatly आप पासवर्ड के माध्यम से लॉगिन को मना कर सकते हैं। उदाहरण के लिए / etc / ssh / sshd_config:
PasswordAuthentication no
यह करने के लिए काफी सीधा-आगे है - यहाँ पाया जाने वाला एक साधारण वॉकथ्रू है ।
मुख्य बिंदु हैं:
ssh-keygen
अपनी मशीन पर चलाएं । यह आपके लिए सार्वजनिक और निजी कुंजी उत्पन्न करेगा।~/.ssh/id_rsa.pub
) की सामग्री को कॉपी और पेस्ट करें ~/.ssh/authorized_keys
।यह याद रखना महत्वपूर्ण है कि यह किसी को भी देगा, जिसके पास आपकी मशीन की निजी कुंजी तक पहुंच रिमोट मशीन के समान है, इसलिए कुंजी जोड़ी बनाते समय आप अतिरिक्त सुरक्षा के लिए यहां एक पासवर्ड दर्ज करने का विकल्प चुन सकते हैं।
विंडोज उपयोगकर्ताओं के लिए पोटीन सेटअप करने के लिए
दूसरों ने जो कहा है, उसे संक्षेप में बताने के लिए, SSH कुंजी सेट करना आसान और अमूल्य है।
जिस मशीन से आप SSHing करेंगे, उस पर आपको अपनी प्रमुख जोड़ी बनाने की जरूरत है:
claudius:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dinomite/.ssh/id_rsa): <ENTER>
Enter passphrase (empty for no passphrase): <PASSPHRASE>
Enter same passphrase again: <PASSPHRASE>
Your identification has been saved in /home/dinomite/.ssh/id_rsa.
Your public key has been saved in /home/dinomite/.ssh/id_rsa.pub.
The key fingerprint is:
a3:93:8c:27:15:67:fa:9f:5d:42:3a:bb:9d:db:93:db dinomite@claudius
संकेत दिए जाने पर केवल एंटर करें और पासफ़्रेज़ दर्ज करें - आदर्श रूप से यह वर्तमान होस्ट और आपके द्वारा SSH करने वाले दोनों पर आपके नियमित लॉगिन पासवर्ड से अलग है।
इसके बाद, आप कुंजी तुम सिर्फ मेजबान है कि आप SSH करना चाहते करने के लिए उत्पन्न कॉपी करने की जरूरत करने के लिए । अधिकांश लिनक्स वितरण में ssh-copy-id
ऐसा करने के लिए एक उपकरण होता है :
claudius:~$ ssh-copy-id caligula.dinomite.net
Now try logging into the machine, with "ssh 'caligula.dinomite.net'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
यदि आपके वितरण में ऐसा नहीं है, तो आपको गंतव्य होस्ट की कुंजी को कॉपी करना चाहिए और इसे (संभवतः मौजूदा) .ssh/authorized_keys
फ़ाइल में जोड़ना चाहिए :
claudius:~$ scp .ssh/id_dsa.pub caligula.dinomite.net:
id_dsa.pub 100% 1119 1.1KB/s 00:00
claudius:~$ ssh caligula.dinomite.net
Last login: Sat May 9 10:32:30 2009 from claudius.csh.rit.edu
Caligula:~$ cat id_dsa.pub >> .ssh/authorized_keys
अंत में, SSH कुंजी से अधिकतम लाभ प्राप्त करने के लिए, आप SSH एजेंट चलाना चाहेंगे। यदि आप एक डेस्कटॉप वातावरण (ग्नोम, केडीई, आदि) का उपयोग करते हैं, तो बस लॉग आउट और वापस आपके लिए एक एसएसएच एजेंट शुरू होगा। यदि नहीं, तो आप आर सी फ़ाइल (अपने खोल के लिए निम्न में जोड़ सकते हैं .bashrc
, .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
निर्देशिका होनी चाहिए chmod 700
जो कनेक्शन उत्पन्न करेगी या प्राप्त करेगी।
पासफ़्रेज़ के बिना (निजी) कुंजी उत्पन्न होनी चाहिए, या एक एजेंट शुरू किया जा सकता है जो क्लाइंट के लिए पासफ़्रेज़-असर कुंजी के डिक्रिप्टेड संस्करण का उपयोग करेगा। एजेंट के साथ शुरू करो ssh-agent $SHELL
। यह वह $SHELL
हिस्सा है जो मुझे खोजने में थोड़ी देर लगा। यदि आप किसी एजेंट का उपयोग करना चाहते हैं, तो पुरुष पृष्ठ देखें, जिसमें विविध विवरण हों।
यह मत भूलो कि डिफ़ॉल्ट रूप से कमजोर (<2048 बिट डीएसए) चाबियाँ sshd के हाल के संस्करणों द्वारा स्वीकार नहीं की जाती हैं।
कनेक्शन उत्पन्न करने के लिए क्लाइंट-साइड मशीन पर निम्नलिखित कार्य करना चाहिए ।
आपकी निजी कुंजी को उचित रूप में ~/.ssh/id_rsa
या उसके अंदर रखा जाना चाहिए ~/.ssh/id_dsa
। आप किसी अन्य नाम का उपयोग कर सकते हैं, लेकिन फिर निजी कुंजी को स्पष्ट रूप से इंगित करने के लिए मूल मशीन पर ssh कमांड पर इसे ai विकल्प में शामिल किया जाना चाहिए।
आपकी निजी कुंजी होनी चाहिए chmod 600
।
जांचें कि आपका होम फ़ोल्डर क्या है chmod 700
।
अब मशीन को अनुरोध प्राप्त करने की अनुमति देने के लिए । एक सामान्य मॉडल वह जगह है जहां एक व्यवस्थापक आपको उस मशीन तक पहुंच प्रदान कर रहा है जो आपके पास नहीं है (जैसे साझा वेब होस्टिंग)। इसलिए, ssh के साथ विचार यह है कि आप अपनी सार्वजनिक कुंजी प्रदान करते हैं कि आप किसको खाता दे रहे हैं। इसलिए आप आमतौर पर अनुरोध प्राप्त करने वाली मशीन पर निजी कुंजी नहीं रखते हैं। लेकिन, यदि आप चाहते हैं कि यह मशीन आउटगोइंग ssh भी करे, तो आपको एक मूल मशीन के रूप में उपरोक्त चरणों के साथ व्यवहार करना चाहिए।
~/.ssh/authorized_keys
नीचे रखा जाना चाहिए जिसे उस खाते के तहत बुलाया जाएगा जो कनेक्शन प्राप्त करेगा । आप अन्य कुंजियाँ रख सकते हैं जिन्हें इस खाते के माध्यम से यहाँ भी जोड़ने की अनुमति है। यदि आप vi में हैं और पीटीटीवाई में पेस्ट बफर से फाइल में कुंजी चिपकाना एक विशेष रूप से मुश्किल बात है, तो यह है: कुंजी "ssh-" से शुरू होती है। यदि आप इन्सर्ट मोड में नहीं हैं, तो पहले "s" इन्स को इन्सर्ट मोड में डाल देंगे और बाकी की की बस ठीक दिखेंगी। लेकिन आपको कुंजी की शुरुआत में एक "s" याद आ रही होगी। मुझे इसे खोजने में कई दिन लग गए।chmod 600 ~/.ssh/authorized_keys
। यह कम से कम gw होना चाहिए।जैसा कि अन्य लोगों ने कहा है, आपके उपयोगकर्ताओं को अपने क्लाइंट मशीनों पर ssh-keygen के साथ खुद के लिए कीपेयर बनाने चाहिए और जिस मशीन में वे लॉग इन करना चाहते हैं, उस पर अपनी सार्वजनिक ~ ~ / ssh / अधिकृत_कीज़ जोड़ सकते हैं।
हालांकि अधिक विस्तृत जानकारी के लिए, मैं SSH, द सिक्योर शेल की अत्यधिक अनुशंसा करता हूं ।
यहाँ पर अच्छी सलाह है, इसलिए मैं इसे नहीं दोहराऊंगा। एक बार जब आप कुंजी के साथ साइन इन करने की अनुमति देने के लिए एक सर्वर सेट करते हैं, तो आप इस एक लाइनर के साथ ऐसा करने के लिए दूसरों को सेटअप कर सकते हैं:
remote=server1 server2 server3 server4
for r in $remote; do echo connecting to $r; tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh $r "tar zxf -; chmod 700 .ssh" ; done
बस अपने घर निर्देशिका के लिए सीडी, चर रिमोट को एक या कई सर्वर नामों के रूप में परिभाषित करें और एक बार में एक गुच्छा करें। यह जो पासवर्ड मांगता है वह रिमोट सर्वर के लिए आपका ssh पासवर्ड होगा। आप बेशक लूप के बिना एक सरलीकृत संस्करण का उपयोग कर सकते हैं:
tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh YOUR_SERVER_NAME_HERE "tar ztvf -; chmod 700 .ssh"
रिमेंबर: केवल अपनी सार्वजनिक कुंजियों की प्रतिलिपि बनाएँ। आप कुछ सर्वर पर बैठे अपने निजी कुंजी नहीं चाहते हैं, जहां कोई भी sudo उन्हें कॉपी कर सकता है और आपके पासफ़्रेज़ को भंग कर सकता है।