सार्वजनिक कुंजी को सर्वरों के लिए "भेजा" और एसएसएच के लिए निजी कुंजी "उपयोग" कैसे किया जाता है?


11

दो लिनक्स मशीनें हैं, ए और बी स्क्रिप्स, ए पर एसएसएच करने में सक्षम होने की आवश्यकता है। इसलिए ए एक सार्वजनिक कुंजी (शायद एक- ssh-keygenप्रेरित id_rsa.pub) उत्पन्न करता है, और फिर बनाने के लिए अपनी संबंधित निजी कुंजी (फिर, शायद id_rsa) का उपयोग करता है। वह SSH कनेक्शन।

अगर मैंने ऊपर जो कुछ भी कहा है वह गलत है या गलत है, कृपया मुझे सुधार कर शुरू करें!

यह मानकर कि मैं लक्ष्य पर कम या ज्यादा हूँ:

  • A, "B" को अपनी सार्वजनिक कुंजी ( id_rsa.pub) कैसे देता है? क्या यह एक मैनुअल प्रक्रिया है, या इसे स्वचालित किया जा सकता है? यदि मैनुअल है, तो प्रक्रिया क्या है? यदि स्वचालित है, तो कमांड क्या है? जब B को यह सार्वजनिक कुंजी मिलती है, तो यह कहाँ जाती है या संग्रहीत होती है?
  • SSH कनेक्शन को B से आरंभ करते समय A id_rsaउस कनेक्शन के भाग के रूप में अपनी निजी कुंजी ( ) का उपयोग कैसे करता है ?

3
क्यों नीचता की व्याख्या करते हैं? यह शोध से पता चलता है, एक SSCCE है , और मेरे ज्ञान के लिए, एक नकल नहीं है। यदि आप असहमत हैं, और लगता है कि यह एक डुप्लिकेट है, तो कृपया सवाल का लिंक प्रदान करें जिसे आप महसूस करते हैं कि यह डुप्लिकेट है!
user3178622

हालांकि, मैंने इस प्रश्न को किसी भी तरह से खराब नहीं किया है और यह नहीं माना है कि शायद सूचना सुरक्षा ढेर अधिक उपयुक्त जगह होगी।
MC10

3
मैंने वोट नहीं दिया, लेकिन मैं समझता हूं कि किसी ने ऐसा क्यों किया। यह एक व्यापक रूप से उपयोग की जाने वाली लॉगिन विधि है, जबकि मैं सहमत हूं कि Google खोज परिणाम इसे बनाने के तरीके के साथ बरबाद होते हैं, न कि यह लेख कैसे काम करता है .. यह जानकारी आपकी तलाश के लिए संभव है।
टायसन

5
SSCCE की धारणा वास्तव में उन सवालों पर लागू नहीं होती है जो कोड के बारे में नहीं हैं।
स्कॉट

2
डुप्लिकेट नहीं, लेकिन संबंधित: superuser.com/questions/383732/how-does-ssh-enc एन्क्रिप्शन-work । प्रश्न के दूसरे भाग का उत्तर दे सकते हैं (निजी कुंजी का उपयोग कैसे किया जाता है)
Jay

जवाबों:


5

ssh-keygenसार्वजनिक और निजी दोनों प्रकार की कुंजी उत्पन्न करता है, जो शुरू में केवल स्थानीय रूप से रहती है। किसी अन्य होस्ट को सार्वजनिक कुंजी देना कुछ ऐसा है जिसे उपयोगकर्ता को मैन्युअल रूप से करने की आवश्यकता होगी, या तो इसे सर्वर बी के लिए जिम्मेदार किसी व्यक्ति को भेजकर, या यदि आपके पास पासवर्ड के साथ एक खाता है, तो आप लॉग इन कर सकते हैं और इसे स्वयं डाल सकते हैं। सर्वर बी में पासवर्ड रहित लॉगिन की अनुमति देने के लिए, आपको सर्वर बी पर अपनी सार्वजनिक कुंजी ~ / .sh / अधिकृत_की फ़ाइल को जोड़ने की आवश्यकता होगी (प्रति पंक्ति एक सार्वजनिक कुंजी, इस फ़ाइल में कोई भी कुंजी हो सकती है)। एक linux कमांड है ssh-copy-idजो आपके लिए ID को कॉपी करेगा और फाइल में डालेगा।

डिफ़ॉल्ट रूप से, ssh आपकी निजी कुंजी के रूप में ~ / .ssh / id_XXX फ़ाइल का उपयोग करेगा। XXX rsa, dsa या कोई भी प्रोटोकॉल हो सकता है जिसके लिए एक कुंजी उत्पन्न की गई थी। IIRC, dsa पुराना है और इसका उपयोग नहीं किया जाना चाहिए। यदि आप एक अलग निजी कुंजी का उपयोग करना चाहते हैं, तो आप इसका उपयोग करके अपने ssh कमांड में निर्दिष्ट कर सकते हैं -i। जब तक उपयोग की जा रही निजी कुंजी रिमोट मशीन पर एक सार्वजनिक कुंजी से मेल खाती है (उपयोगकर्ता के खाते के लिए अधिकृत_की फ़ाइल में जिसे आप लॉग इन कर रहे हैं), तो आपको पासवर्ड की आपूर्ति करने की आवश्यकता नहीं होगी।


धन्यवाद @BamaPookie - कुछ फॉलोअप: (1) जब ssh-keygenदौड़ा जाता है, तो आप उल्लेख करते हैं कि दो कुंजी "केवल स्थानीय रूप से निवास करती हैं"? कहाँ पे?!? के रूप में, क्या फ़ोल्डर मैं पर नेविगेट कर सकते हैं और देखते हैं id_rsa.pubऔर id_rsa? (२) मुझे लगा कि ssh-addसार्वजनिक कुंजी को जोड़ने की आज्ञा है authorized_keys, नहीं? बीच क्या अंतर है ssh-copy-idऔर ssh-add? एक बार फिर धन्यवाद!
user3178622

2
@ user3178622 re '1' मेरे सामने यह नहीं है, लेकिन यह ~/.ssh/id_rsa फिर से '2' जैसा दिखता है , ssh-add अधिकृत_keys में जोड़ने के लिए नहीं है, यह एक चाबी का गुच्छा में जोड़ने के लिए है .. मैंने ssh का उपयोग नहीं किया है -हालांकि। ssh-add आपको सक्षम करने के साथ करना है कि हर बार जब आप कीफ का उपयोग करने के लिए कीफ्रेस की आवश्यकता होती है, तो एक कीफ़्रेज़ दर्ज न करें। इसलिए यदि आपकी ssh कुंजियों को कीफ्रेज़ की आवश्यकता नहीं है, तो मुझे लगता है कि ssh-add का उपयोग करने का कोई कारण नहीं है और मुझे लगता है कि आपको अभी भी ssh-copy-id का उपयोग करने की आवश्यकता है या मैनुअल कुंजी की सार्वजनिक प्रतिलिपि बनाने के लिए authorized_keys
barlop

2
ssh-keygen आपको पूछेगा कि फ़ाइल को कहां सहेजना है, लेकिन डिफ़ॉल्ट स्थान ~ / .ssh / ssh-copy-id में सार्वजनिक कुंजी को दूरस्थ होस्ट पर कॉपी करता है। ssh-add आपके स्थानीय कीरिंग के लिए एक निजी कुंजी जोड़ता है। अपने स्थानीय कीरिंग में एक निजी कुंजी जोड़ने का मतलब है कि यह ssh कनेक्शन का प्रयास करते समय डिफ़ॉल्ट रूप से जाँच की जाएगी (अर्थात, इसे -i के साथ निर्दिष्ट किए बिना)।
BamaPookie

1
@BamaPookie जहाँ आप लिखते हैं "अपने स्थानीय कीरिंग के लिए एक निजी कुंजी जोड़ना का अर्थ है कि यह ssh कनेक्शन का प्रयास करते समय डिफ़ॉल्ट रूप से जाँच की जाएगी (अर्थात, इसे -i के साथ निर्दिष्ट किए बिना)।" <--- यह स्पष्ट करने योग्य है। मुझे लगता है कि इसका मतलब है कि यह चुनी गई डिफ़ॉल्ट निजी कुंजी को बदल देता है, ताकि यह id_rsa होने के बजाय, यह कीरिंग से हो। (बेशक, ssh-add के बिना आपको अभी भी -i के साथ एक निजी कुंजी निर्दिष्ट करने की आवश्यकता नहीं है, यह अभी भी एक डिफ़ॉल्ट होगा, बस एक अलग डिफ़ॉल्ट होगा)।
बार्लोप

3

दो लिनक्स मशीनें हैं, ए और बी स्क्रिप्स ए पर एसएसएच में सक्षम होने की आवश्यकता है। इसलिए ए एक सार्वजनिक कुंजी उत्पन्न करता है (शायद एक ssh-keygen- उत्पन्न id_rsa.pub), और फिर अपनी संबंधित निजी कुंजी का उपयोग करता है फिर, शायद SS_ कनेक्शन बनाने के लिए id_rsa)।

अगर मैंने ऊपर जो कुछ भी कहा है वह गलत है या गलत है, कृपया मुझे सुधार कर शुरू करें!

यह मानकर कि मैं लक्ष्य पर कम या ज्यादा हूँ:

हाँ

लेकिन B को A को B से कनेक्ट करने में सक्षम होने के लिए B की अधिकृत_की फ़ाइल में सूचीबद्ध होने के लिए A की सार्वजनिक कुंजी की आवश्यकता है

यह भी कि आप id_rsa.pub को हटा सकते हैं और B को ssh कर सकते हैं और यह अभी भी काम करेगा, क्योंकि सार्वजनिक कुंजी प्रत्येक ssh कनेक्शन के साथ नई बनती है और किसी id_rsa.pub में संग्रहीत नहीं होती है

A, "B" को अपनी सार्वजनिक कुंजी (id_rsa.pub) कैसे देता है? क्या यह एक मैनुअल प्रक्रिया है, या इसे स्वचालित किया जा सकता है? यदि मैनुअल है, तो प्रक्रिया क्या है? यदि स्वचालित है, तो कमांड क्या है?

मैनुअल - कुछ इस तरह

एक से-

cat ~/.ssh/id_rsa.pub | ssh USER@HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

या इससे भी अधिक मैन्युअल रूप से, कमांड को तोड़ने के लिए

एक $ cat id_rsa.pub | ssh user@host 'cat>~/a.a'

फिर बी पर, सुनिश्चित करें कि ~ /। ssh मौजूद है तो करें cat a.a >> ~/.ssh/authorized_keys

और आप यह सूचीबद्ध कर सकते हैं कि कुंजी सूचीबद्ध होने से पहले और बाद में बी के अधिकृत_कीट्स को कैट कर सकते हैं।

या आप एक ईमेल खाते में id_rsa.pub ईमेल कर सकते हैं, फिर B से, B ईमेल की जांच कर सकते हैं और id_rsa.pub की सामग्री को उसकी अधिकृत_की फ़ाइल में जोड़ सकते हैं।

खुद ब खुद

Ssh-copy-id कमांड

आपको ssh में सक्षम होना चाहिए, इसलिए आपको पासवर्ड एक्सेस की आवश्यकता है

Ssh उपयोगकर्ता @ होस्ट करने के बजाय, आप ssh-copy-id उपयोगकर्ता @ होस्ट करते हैं और आपको पासवर्ड के लिए संकेत दिया जाता है, आप इसे दर्ज करते हैं, आप इसमें हैं, यह सार्वजनिक कुंजी को कॉपी कर देगा। और अगली बार जब आप ssh user @ host करेंगे तो यह कुंजी का उपयोग करेगा।

जब B को यह सार्वजनिक कुंजी मिलती है, तो यह कहाँ जाती है या संग्रहीत होती है?

B का ~ /। Ssh / अधिकृत_की

SSH कनेक्शन को B से आरंभ करते समय, A उस कनेक्शन के भाग के रूप में अपनी निजी कुंजी (id_rsa) का उपयोग कैसे करता है?

ठीक है, मुझे इसके बारे में ज्यादा जानकारी नहीं है, मेरे सिर के ऊपर से, लेकिन जो भी एक कुंजी के साथ एन्क्रिप्ट किया गया है, उसे दूसरी कुंजी के साथ डिक्रिप्ट किया जा सकता है, और अपने आप को पहचानना डेटा भेजने के लिए थोड़ा अलग है .. और कुछ हो सकता है एक अस्थायी कुंजी के बारे में भी।


धन्यवाद @barlop! कृपया मेरे प्रश्नों को नीचे देखें BamaPookie का उत्तर; मेरे पास आपके लिए समान प्रश्न हैं!
user3178622
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.