आप किसी अन्य उपयोगकर्ता के लिए एक ssh कुंजी कैसे बनाते हैं?


89

मैं दूसरे उपयोगकर्ता के लिए एक ssh कुंजी बनाने की कोशिश कर रहा हूँ। मैं रूट के रूप में लॉग इन हूं। क्या मैं केवल ssh-keygen द्वारा उत्पन्न फाइलों को संपादित कर सकता हूं और जो रूट यूजर को चाहिए, उसे बदल सकता हूं?


5
यदि आप उपयोगकर्ता के लिए कुंजी बनाते हैं, तो आपके पास निजी कुंजी प्राप्त करने का एक सुरक्षित तरीका होना चाहिए और यह उपयोगकर्ता के लिए वाक्यांश होगा। बहुत बेहतर उपयोगकर्ता कुंजी उत्पन्न करता है और फिर आपको सार्वजनिक कुंजी ईमेल करता है।
2095 पर user9517

लेकिन क्या यह मुश्किल नहीं है कि आप पासवर्ड लॉगिन की अनुमति न दें? यदि मैं कुंजी-केवल हूं, और मैंने एक नया उपयोगकर्ता सेट किया है, तो वे अपनी कुंजी सेट करने के लिए लॉगिन नहीं कर सकते हैं।
LVLAaron

जवाबों:


79

आप ऐसा कर सकते हैं ssh-keygen, हालाँकि, याद रखें कि निजी कुंजी उपयोगकर्ता के लिए निजी होने के लिए है, इसलिए आपको इसे सुरक्षित रखने के लिए बहुत सावधानी बरतनी चाहिए - उपयोगकर्ता के पासवर्ड के समान सुरक्षित। या यहां तक ​​कि सुरक्षित है, क्योंकि उपयोगकर्ता को पहले लॉगिन पर इसे बदलने की आवश्यकता नहीं है।

ssh-keygen -f anythingवर्तमान निर्देशिका में दो फाइलें बनाता है। anything.pubवह सार्वजनिक कुंजी है, जिसे आप ~/.ssh/authorized_keysकिसी भी गंतव्य सर्वर पर उपयोगकर्ता को भेज सकते हैं।

दूसरी फ़ाइल, जिसे केवल anythingनिजी कुंजी कहा जाता है और इसलिए इसे उपयोगकर्ता के लिए सुरक्षित रूप से संग्रहीत किया जाना चाहिए। डिफ़ॉल्ट स्थान होगा ~username/.ssh/id_rsa(यहाँ नाम दिया गया है id_rsa, जो कि rsa कुंजियों के लिए डिफ़ॉल्ट है)। याद रखें कि .sshनिर्देशिका किसी और के द्वारा पठनीय या लिखने योग्य नहीं हो सकती है, लेकिन उपयोगकर्ता और उपयोगकर्ता की होम निर्देशिका किसी और के द्वारा, लेकिन उपयोगकर्ता द्वारा लिखी नहीं जा सकती है। इसी तरह, अनुमतियाँ निजी कुंजी पर चुस्त होनी चाहिए, साथ ही: केवल उपयोगकर्ता के लिए पढ़ें / लिखें, और .ssh निर्देशिका और निजी कीफ़ाइल उपयोगकर्ता के स्वामित्व में होनी चाहिए।

तकनीकी रूप से आप कुंजी को कहीं भी स्टोर कर सकते हैं। साथ ssh -i path/to/privatekeyआप उस स्थान को निर्दिष्ट कर सकता है, वहीं कनेक्ट। फिर, उचित स्वामित्व और अनुमतियां महत्वपूर्ण हैं और ssh काम नहीं करेगा यदि आपके पास उनका अधिकार नहीं है।


4
+1 यह व्यक्त करने के लिए कि यह एक निजी (!) कुंजी है
mailq

51
आप मान रहे हैं कि उपयोगकर्ता एक वास्तविक व्यक्ति है। यदि लॉगिन एक गैर-संवादात्मक उपयोगकर्ता है जिसका उपयोग उपयोगिता कार्यों को करने के लिए किया जाता है (जैसे दूरस्थ सर्वर पर रनिंग मेन स्क्रिप्ट्स), तो हाँ, आप संभवतः उस उपयोगकर्ता के लिए मैन्युअल रूप से कुंजी उत्पन्न करेंगे। बेशक, इसके अपने सुरक्षा निहितार्थ हैं, लेकिन यह एक और कहानी है।
रिलिंडो

2
ssh -iगैर-विशेषाधिकार प्राप्त प्रक्रिया के लिए निजी कुंजी के लिए @Rilindo यह है कि मैं कुछ स्वचालित rsync बैकअप प्रक्रियाओं से अधिक कैसे संभालता हूं। :)
शादुर

9
मुझे उस तरह का जवाब पसंद नहीं है जो कहता है कि "आपको ऐसा नहीं करना चाहिए" लेकिन सवाल का जवाब न दें। हालांकि यह मूल प्रश्न के संदर्भ के लिए सही और सहायक हो सकता है, अन्य लोगों के लिए एक अलग स्थिति में एक ही सवाल हो सकता है। "किसी अन्य उपयोगकर्ता के लिए ssh कुंजियाँ कभी भी उत्पन्न नहीं होनी चाहिए": यह साधारण मामले में सच है। लेकिन एक ही भौतिक व्यक्ति की कई पहचानों पर विचार करें, उदाहरण के लिए। कई प्रणालियों पर कई खाते हो सकते हैं, उनमें से सभी आपको कुंजी उत्पन्न करने की अनुमति नहीं देते हैं या निजी कुंजी की रक्षा करने की अनुमति देते हैं।
गुस्ताव


135

नहीं है SSH कुंजियों में कोई उपयोगकर्ता जानकारी

सार्वजनिक कुंजी में अंतिम फ़ील्ड एक टिप्पणी है (और निम्न कमांड को चलाकर बदला जा सकता है ssh-keygen -C newcomment)।

किसी अन्य उपयोगकर्ता के लिए कुंजी बनाने के लिए कुछ विशेष करने की आवश्यकता नहीं है, बस इसे सही स्थान पर रखें और अनुमतियाँ सेट करें।


5
यही सही जवाब है।
सेबनुकम

1
मैं सिर्फ परीक्षण और पुष्टि करता हूं, न केवल यह केवल एक टिप्पणी है, लेकिन इसे हटाया जा सकता है और चाबियाँ अभी भी काम करती हैं। मैंने हमेशा सोचा कि यह मायने रखता है! सही उत्तर देने के लिए धन्यवाद। उपरोक्त टिप्पणियों की तरह, मेरे पास अन्य उपयोगकर्ताओं के लिए कुंजी बनाने का एक कारण है, लेकिन मैं यह नहीं कहूंगा कि, इसलिए कोई तर्क नहीं है।
FreeSoftwareServers

18

का उपयोग करके उपयोगकर्ता बनें सु और है कि उपयोगकर्ता के रूप में कुंजी चलाएँ:

[root@kvm0001 ~]# su - joeuser
[joeuser@kvm0001 ~]$ ssh-keygen -t dsa (or rsa1 or rsa, depending on your security requirements)
Generating public/private dsa key pair.
Enter file in which to save the key (/home/joeuser/.ssh/id_dsa):

डीएसए को क्यों निर्दिष्ट करें?
राम

वूप्स, आदत का बल। मुझे अपडेट करने दो।
रिलिंडो

4
आपको rsa का उपयोग किया जाना चाहिए (या चतुराई से वैरिएंट वक्र में से एक)। dsa असुरक्षित चाबियों तक सीमित है। rsa1 ssh1 के लिए एक विरासत प्रारूप है जिसका उपयोग अब और नहीं किया जाना चाहिए।
पीटर ग्रीन

मेरा joeuserएक सेवा उपयोगकर्ता है, इसलिए मैं उनके रूप में लॉगिन नहीं कर सकता। मैं एक सेवा उपयोगकर्ता (जो सिर्फ प्रक्रियाएं चलाता है) को ssh कुंजी रखने की अनुमति कैसे देता है?
जोनाथन

@JonathanLeaders उस उपयोगकर्ता के बनने पर आप उपयोगकर्ता के लिए शेल निर्दिष्ट करेंगे। कुछ इस तरह से: `` `[जड़ @ ip-10-254-41-211 ~] # grep ftp / etc / passwd ftp: x: 14: 50: FTP उपयोगकर्ता: / var / ftp: / sbin / aryin [रूट] @ ip-10-254-41-211 ~] # su - ftp su: चेतावनी: निर्देशिका को / var / ftp में नहीं बदल सकता: ऐसी कोई फ़ाइल या निर्देशिका नहीं है जो यह खाता अभी उपलब्ध नहीं है। [रूट @ ip-१०-२५४-४१-२११ ~] # सु -एस / बिन / बाश ftp बाश
-४.२

6

जैसा कि यहाँ देखा गया है , आप जिस SSH कुंजी को जोड़ना चाहते हैं, उस फ़ोल्डर की रीड अनुमतियाँ बदलने के लिए chmod का उपयोग कर सकते हैं।

vim /home/username/.ssh/authorized_keys

फिर, बस उस फ़ाइल के निचले भाग में एक नई पंक्ति की कुंजी चिपकाएँ


1
लिंक मर चुका है ...
Nyxynyx
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.