Windows, Linux, या MacOSX क्लाइंट के माध्यम से Linux / MacOSX sshd सर्वर के लिए ssh, की-बेस्ड ("पासवर्ड-कम") लॉग इन कैसे करें?


4

Windows, Linux, या MacOSX क्लाइंट के माध्यम से लिनक्स / MacOSX sshd सर्वर पर क्लाइंट सेटअप, की-बेस्ड ("पासवर्ड-कम") क्लाइंट लॉगिन कैसे करता है?

[दोनों की-बेस्ड, ssh / sshd लॉगिन की आधारभूत, वैचारिक समझ, साथ ही सभी के लिए सेटअप का एक संचालन उदाहरण है, उपरोक्त ऑपरेटिंग सिस्टम।]


(मुझे चुनौती-प्रतिक्रिया और प्रमाणीकरण सहित कुंजी-आधारित लॉगिन अवधारणाओं के विवरण के साथ अपने स्वयं के प्रश्न का उत्तर देने की योजना है, और फिर एक संचालन-सेटअप उदाहरण प्रदान करता है। लेकिन मेरे पास तत्काल जवाब देने के लिए अभी तक पर्याप्त प्रतिनिधि नहीं हैं, इसलिए मैं ऐसा करने से पहले एक इंतजार ~ 8 घंटे की जरूरत है।)
जॉनी यूटा


@ slhck- thx, सहायक रेफरी।
जॉनी उटाह

जवाबों:


3

पसंद करते हैं:

  1. कुंजी-एन्क्रिप्शन अवधारणा के संक्षिप्त मूल सिद्धांतों पर चर्चा करें (जादू को ध्वस्त करने की कोशिश)
  2. लॉगिन-ओवर-नेटवर्क (प्रमाणीकरण) सामान के लिए कहा अवधारणाओं को लागू करें
  3. एक विस्तृत, परिचालन उदाहरण / प्रक्रिया प्रदान करें।

1: बेस एनक्रिप्शन, ऑथेंटिकेशन कॉन्सेप्ट्स

एक सार्वजनिक कुंजी एन्क्रिप्टेड डेटा उत्पन्न करती है जो केवल एक निजी कुंजी डिक्रिप्ट कर सकती है। कोई फर्क नहीं पड़ता कि यह डेटा क्या है। [एक साधारण पाठ फ़ाइल हो सकती है ... या किसी प्रकार की चुनौती-प्रतिक्रिया प्रमाणीकरण प्रणाली (नीचे विवरण) ... इसका सिर्फ एक एन्क्रिप्शन-डिक्रिप्शन तंत्र है।] उदाहरण के लिए, somone "जॉनी उताह" की सार्वजनिक कुंजी के साथ ईमेल सामग्री को एन्क्रिप्ट कर सकता है। और इसके परिणामस्वरूप, एन्क्रिप्टेड आउटपुट जो केवल जॉनी यूथ की निजी कुंजी के साथ डिक्रिप्ट किया जा सकता है। इसलिए यह महत्वपूर्ण है कि "सुरक्षित और निजी" सांप्रदायिकता का समर्थन करने के लिए निजी कुंजी को एक सुरक्षित स्थान (अधिमानतः नेटवर्क पर यात्रा नहीं करना) में रखा गया है।

2: कहा कि पासवर्ड-कम लॉगिन सक्षम करने के लिए अवधारणाओं

एक "पासवर्ड-कम" लॉगिन अक्सर एक चुनौती-प्रतिक्रिया प्रमाणीकरण प्रणाली के साथ सक्षम होता है। सिस्टम "लॉग इन" हो रहा है (इसे मशीन कहते हैं) एक "प्रश्न" (शायद सिर्फ एक यादृच्छिक स्ट्रिंग) के साथ आता है, एनक्रिप्ट ने एक सार्वजनिक कुंजी के साथ प्रश्न में कहा "मशीन जो लॉग इन करना चाहती है (इसे मशीन एक्स कहते हैं)"। " मशीनएक्स डिक्रिप्टर्स ने कहा कि प्रश्न को डिक्रिप्ट किए गए प्रश्न को मशीनए द्वारा मान्य किए जाने वाले "उत्तर" के रूप में वापस प्रसारित करता है। एक बार मान्य हो जाने पर, MachineA एक MachineX लॉगिन (MachineA में) अनुदान देता है।

यह सभी मानता है कि ~/.ssh/authorized_keysऊपर दिए गए विनिमय से पहले मशीनए के पास मशीनएक्स की सार्वजनिक कुंजी (लिनक्स सिस्टम पर आमतौर पर "लॉग इन हो रहा है") संग्रहीत होती है। यही कारण है कि किसी को MachineA:~/.ssh/authorized_keysफ़ाइल में उक्त सार्वजनिक कुंजी की एक प्रति चाहिए । यह फ़ाइल भी, सैद्धांतिक रूप से, नामित की जा ~/.ssh/authorized__public__keysसकती है ... और संभवतः कई उपयोगकर्ताओं के बीच भ्रम की स्थिति से बच सकती है अगर इसे इस तरह नामित किया गया था ... लेकिन यह माना जाता है कि "वितरित" कुंजी सार्वजनिक कुंजी हैं, और इसलिए हमें डिजाइनरों पर संदेह है लगा कि "सार्वजनिक" विशेषण अत्यधिक हो सकता है।

3: विस्तृत, परिचालन उदाहरण / प्रक्रिया

(प्रस्तावना: यह मानता है कि सर्वर / मशीन में लॉग इन करने के लिए एक रनिंग sshdडेमॉन है। इसके अलावा, एक वैकल्पिक उदाहरण / प्रक्रिया / नोट्स उत्तर में पाया जा सकता है "मैं एसएसएच कैसे सेट करूं ताकि मुझे अपना पासवर्ड टाइप न करना पड़े ? " , लेकिन यह अन्य बातों के अलावा, विंडोज क्लाइंट को कवर नहीं करता है ।"

क्लाइंट-साइड (ssh) लॉगिन प्रक्रिया के लिए एक मुख्य जोड़ी बनाएँ। विंडोज पर, PuTTYgen का उपयोग करने पर विचार करें और एक सार्वजनिक कुंजी (निश्चित रूप से) सहित नई कुंजी जोड़ी बनाएं । Linux / MacOSX के लिए, ssh-keygen (1) की सलाह दें । इस उदाहरण को देखें-जोड़ी निर्माण सत्र अनबंटू (लिनक्स) 11.04 पर चला।

joeschmo@MachineX:~$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/joeschmo/.ssh/id_rsa): 
Created directory '/home/joeschmo/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/joeschmo/.ssh/id_rsa.
Your public key has been saved in /home/joeschmo/.ssh/id_rsa.pub.
The key fingerprint is:
e8:36:69:c5:9a:d2:e3:e0:53:f3:34:d4:d0:a2:8a:80 joeschmo@MachineX
The key's randomart image is:
[... <output truncated by author to save space> ...]
joeschmo@MachineX:~$ ls -la .ssh
total 16
drwx------ 2 joeschmo joeschmo 4096 Oct 20 12:26 .
drwxr-xr-x 3 joeschmo joeschmo 4096 Oct 20 12:26 ..
-rw------- 1 joeschmo joeschmo 1679 Oct 20 12:26 id_rsa
-rw-r--r-- 1 joeschmo joeschmo  408 Oct 20 12:26 id_rsa.pub
joeschmo@MachineX:~$ cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp8nle6B68HgVQoQ8hCyQI9yKjsKnThRS0FjWsOwXId8Mc6i9E3zM0ByxBeneIFP8O42dwYmM9zwWrpP8zvpSbo0J2qIfhm+kZibClJnIIY8nVJt5AbXGdoQHOnxKOJUqP9EZgOgMqEjBNB3IVi7jPw2AXcMeZb1SCCbwsLWXzueECJP7Z4oJTU5+hD0grFMaWNhSszdpSD2Xo1hWi2fPdBu/cRMV4LTD3L7pOI57HeXS2mcLoznQohV7OV4RvDgRS9hhHi1A5/bzg9zRHJBISB0sxnwjmfz/kTaljBVZ8xtM9LenkmQYyj6B+0P+BFDAxzHIJKNOrf+i92fuLktoP joeschmo@MachineX
joeschmo@MachineX:~$ 

ऊपर लिनक्स एक्सैम्पल /home/joeschmo/.ssh/id_rsaमें, निजी कुंजी (यह सिर्फ पाठ है), /home/joeschmo/.ssh/id_rsa.pubसार्वजनिक कुंजी शामिल है (यह भी सिर्फ पाठ है)। मैंने भी उपरोक्त उदाहरण में कोई पासफ़्रेज़ दर्ज नहीं किया, बस "नो पासफ़्रेज़" के लिए "रिटर्न" दर्ज किया।

[लेखक का ध्यान दें: पहले कभी भी किसी सार्वजनिक कुंजी के लिए पासफ़्रेज़ का उपयोग नहीं किया जाता है, लेकिन ऐसा करते समय, किसी को सार्वजनिक कुंजी को "एक्सेस" करने के लिए पासफ़्रेज़ को पुनः दर्ज करने की आवश्यकता होती है ... संभवतः पासफ़्रेज़ सार्वजनिक कुंजी को एन्क्रिप्ट कर रहा है, लेकिन मैं निश्चित नहीं। यदि कहा जाता है कि पासफ़्रेज़ को हर बार दर्ज करने की आवश्यकता होती है, तो वह पासवर्ड-कम लॉगिन के उद्देश्य को हरा देता है। शायद यह केवल एक बार की प्रविष्टि है? बाद के लिए होमवर्क, संभवतः ...]

सभी उपरोक्त प्रक्रिया का प्रतिनिधित्व क्लाइंट साइड (मशीन "में लॉग इन करने से प्रक्रियाओं")। अब सर्वर-साइड (मशीन "लॉग इन टू ") सेटअप पर।

आपको पासवर्ड-कम लॉगिन से अनुदान देने वाली मशीनों id_rsa.pubकी ~/.ssh/authorized_keysफ़ाइल में सामग्री को जोड़ना होगा joeschmo@MachineX। (नोट: 'समूह' और 'अन्य / दुनिया' अनुमतियों को बंद करना सुनिश्चित करें ~/.ssh/authorized_keys, othwerise sshd आम तौर पर उक्त फ़ाइल को नहीं पढ़ेगा, क्योंकि संभवतः इसे "असुरक्षित" माना जाता है)। नोट: ssh-copy-id स्वचालित करता है / इस प्रक्रिया को सरल करता है।

बस। यदि आप केवल एक मशीन से दूसरी मशीन में पासवर्ड-कम लॉगिन करना चाहते हैं, तो आप कर रहे हैं।

लेकिन ... आम तौर पर ...

एक मशीन पर निजी कुंजी रखें (इस प्रकार उक्त मशीन की पहचान करते हैं - चलो इसे "मशीनएक्स" कहते हैं) और जोड़ी के सार्वजनिक कुंजी भाग को प्रत्येक मशीन पर कॉपी करें जो मशीनएक्स में एक लॉगिन प्रदान करेगा। इस प्रकार मशीनें A, B, C सभी ने मशीनएक्स की सार्वजनिक कुंजी की एक प्रति अपनी ~/.ssh/authorized_keyमशीन में ए, बी, और सी में लॉगिन करने के लिए मशीनएक्स को सक्षम करने के लिए डाल दिया (आगे, आप कई अन्य सार्वजनिक कुंजी रिकॉर्ड कर सकते हैं ... DIFFERENT कुंजी जोड़े से , मशीन A, B, और C से संबंधित ~/.ssh/authorized_keysमशीन से लॉगिन को सक्षम करने के लिए संबंधित है।) जैसे।

Machine X pub key  --- copied to ~/.ssh/authorized_keys at -->  Machine A
Machine X pub key  --- copied to ~/.ssh/authorized_keys at -->  Machine B
Machine X pub key  --- copied to ~/.ssh/authorized_keys at -->  Machine C

उपर्युक्त किसी पासवर्ड के बिना मशीन एक्स से किसी भी ए, बी या सी में लॉगिन करने की अनुमति देता है।

वैकल्पिक रूप से:

Machine Y pub key  --- copied to ~/.ssh/authorized_keys at -->  Machine A
Machine Y pub key  --- copied to ~/.ssh/authorized_keys at -->  Machine B
Machine Y pub key  --- copied to ~/.ssh/authorized_keys at -->  Machine C

उपर्युक्त एक पासवर्ड टाइप किए बिना, मशीन वाई से किसी भी ए, बी या सी में लॉगिन करने की अनुमति देता है।

इस प्रकार .... जब उपरोक्त सभी "लागू होते हैं" .... मशीनें A, B, और C सभी में A, B और C दोनों में X और Y की सार्वजनिक कुंजी की एक प्रति है ~/.ssh/authorized_keys

ध्यान दें कि प्रत्येक पब / निजी कुंजी जोड़ी आमतौर पर मशीन पर एक निश्चित खाते (उपरोक्त मामलों में, मशीन एक्स और वाई) से जुड़ी होती है। जैसे, johnnyutahh @ MachineX, pappas @ MachineY, आदि।

किसी भी मामले में, पब / निजी कुंजी जोड़ी में निजी कुंजी केवल एक मशीन पर रहती है (यदि आप "इसे सही कर रहे हैं") और कभी भी एक नेटवर्क पर ले जाया नहीं जाता है। इस प्रकार यह निजी है। इस प्रकार यह "सुरक्षित" है। इसके विपरीत, सार्वजनिक कुंजी को हवा में फेंक दिया जाता है और सभी जगह नकल की जाती है।

~/.ssh/authorized_keysनीचे दिए गए फ़ाइल उदाहरण मेरे से सार्वजनिक कुंजी है johnnyutahh@my-laptop, root@site1.com, root@hypothetical-site2.com, joeschmo@MachineX(ऊपर ssh-keygen उदाहरण से), और हो सकता है दूसरों। ध्यान दें कि प्रत्येक पंक्ति के अंत में "पते" केवल टिप्पणियां हैं; वे एक मानव आकृति की मदद करने के लिए सिर्फ मनमाना पाठ हैं जो कुंजी है और वास्तव में कुछ भी करने के लिए स्वचालित प्रणाली / कार्यक्रमों में से किसी के द्वारा उपयोग नहीं किया जाता है।

root@MachineA Oct 20 02:20:12 ~# cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyTNCV7NUBssxobBZqWormtzcUmICSeGPTSp1i48FVIAebvpgAv7Pb3lFG3vFP8e88w9zGjFnZ6GzTQEwQaTL9YJ/Q9zOvAuxjb8chJz86j9Pg+S8ic4G34c2Og8UoNbTDWYOAZaP/axpoC9W81bh0tjldPnGQuifm9ELHXMXjfGq9QazyPqOcgNG6QL7cl8TYGoj4yJxRwoSytYG65l0/bCFX8JubkFdbWDXNY4tFEfollFIlm10xzQIfz6S6I80Bu0XesFvCjgfLwiLdt+8nT7U9Tawwq8jBc1U0yisQzkSJ9UwXYcKkYX2SJMQ8Ld3Nn82wsisXcEn+Zpe3A6Usw== johnnyutahh@my-laptop
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0zPre+WkOlNgc4KzFRxGj2Y5UwG0gW+kI2LjvgwNYZLHGQqQ0GQGkmg5rulSbyx3WPo1KNCiaqafQ8fWFmXIgKreGWMwEOehnKLyXLhhxvzpYDgJhI1QbwgInLjUCj8krvsdj9fCLY6sFTYFCXLKUptJGbXThcB170kFhJCUlR33H4WfWn4NWzwpmma4HsVDR7F7eUmJE8FD+6AG4Uw9bljDaUS++XghAZ5oXUofGx7FE2vcQKdNAMF5jYIN/XbL4cj4HuJUonqYgyxCX2JpvJePEwMBW1qQffAjgtgs85217OFmfLIVL6rB3RHh1mmIHSVLtOhAZo1okg708scPCw== root@site1.com
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC84JdXtzFhQgcFj7/1pz+li2qzZSThJalddkUubuvI71i/Bk7fJ5uI8CCQDPvzr1P+HGaY//RxBG0S2jINXk4LEE1mA3Ogyo+r2ykMaqcNa2JJycHs0sdczZhZR0OOxf5KGz8hhy5W1cdhca6q0AcHmbj+KWz5N0U1qlLptMD4C45QgxtUjFYPWM7r9bDdt6kTo9J39LP4w3S1GTM9uDC8V5NUZX+lFZMap+Tch/YcEiPxAm4VaTM7CGXly+w5XpjlEVUNEb5xu51dOoOXbjueD5Vl3wdPwC6A511v2k9mD/1F4GXjRDzlelKiu4TJ9mVAI2J9+UC0iMUyYj52RO53 root@hypothetical-site2.com
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp8nle6B68HgVQoQ8hCyQI9yKjsKnThRS0FjWsOwXId8Mc6i9E3zM0ByxBeneIFP8O42dwYmM9zwWrpP8zvpSbo0J2qIfhm+kZibClJnIIY8nVJt5AbXGdoQHOnxKOJUqP9EZgOgMqEjBNB3IVi7jPw2AXcMeZb1SCCbwsLWXzueECJP7Z4oJTU5+hD0grFMaWNhSszdpSD2Xo1hWi2fPdBu/cRMV4LTD3L7pOI57HeXS2mcLoznQohV7OV4RvDgRS9hhHi1A5/bzg9zRHJBISB0sxnwjmfz/kTaljBVZ8xtM9LenkmQYyj6B+0P+BFDAxzHIJKNOrf+i92fuLktoP joeschmo@MachineX
root@MachineA Oct 20 02:20:19 ~#
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.