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


मुझे हमेशा लगता है कि जब मैं यह संदेश प्राप्त करता हूं ssh एक नई मशीन में:

12:f8:7e:78:61:b4:bf:e2:de:24:15:96:4e:d4:72:53

इसका मतलब क्या है? क्या हर मशीन में हर बार एक ही फिंगरप्रिंट होगा?

इन फिंगरप्रिंट कैसे उत्पन्न होते हैं? वे किस पैरामीटर पर निर्भर करते हैं?


97
2018-05-08 14:22


मूल




जवाब:


फिंगरप्रिंट मेजबान की सार्वजनिक कुंजी पर आधारित होता है, आमतौर पर "/etc/ssh/ssh_host_rsa_key.pub" पर आधारित होता है आम तौर पर यह उस मेजबान की आसान पहचान / सत्यापन के लिए है जिसे आप कनेक्ट कर रहे हैं।

अगर फिंगरप्रिंट बदलता है, तो जिस मशीन से आप कनेक्ट कर रहे हैं, उसकी सार्वजनिक कुंजी बदल गई है। यह एक बुरी चीज नहीं हो सकती है (एसएसएच को पुनः स्थापित करने से होता है), लेकिन यह भी संकेत दे सकता है कि आप एक ही डोमेन / आईपी पर एक अलग मशीन से कनेक्ट हो रहे हैं (तब होता है जब आप लोड बैलेंसर जैसे किसी चीज़ से कनेक्ट होते हैं) या आप एक मैन-इन-द-बीच हमले के साथ लक्षित किया जा रहा है, जहां हमलावर किसी भी तरह से आपके एसएसएच कनेक्शन को एक अलग मेजबान से जोड़ने के लिए अवरुद्ध / दोबारा शुरू कर रहा है जो आपके उपयोगकर्ता / पीडब्ल्यू को छीन सकता है।

जमीनी स्तर: अगर आपको एक बदले गए फिंगरप्रिंट की चेतावनी दी जाती है, तो सावधान रहें और दोबारा जांच करें कि आप वास्तव में एक सुरक्षित कनेक्शन पर सही मेजबान से कनेक्ट हो रहे हैं। हालांकि अधिकांश समय यह हानिरहित है, यह एक संभावित मुद्दे का संकेत हो सकता है

देख: http://www.lysium.de/blog/index.php?/archives/186-How-to-get-ssh-server-fingerprint-information.html
तथा: http://en.wikipedia.org/wiki/Public_key_fingerprint


46
2018-05-08 14:41



"... सावधान रहें और दोबारा जांच करें कि आप वास्तव में एक सुरक्षित कनेक्शन पर सही मेजबान से कनेक्ट हो रहे हैं" - बेवकूफ सवाल, लेकिन आप इसे आसानी से कैसे कर सकते हैं? - Savara
@Savara जब आप किसी ऐसे एसएसएच सर्वर से कनेक्ट होते हैं जिसे आपने पहले कनेक्ट नहीं किया था, तो आपको सर्वर व्यवस्थापक से एसएसएच सर्वर की सार्वजनिक कुंजी का अनुरोध करना चाहिए। सर्वर व्यवस्थापक आपको पाठ का एक टुकड़ा देगा। आपको इस पाठ को फ़ाइल में जोड़ना चाहिए ~/.ssh/known_hosts। इस तरह, जब आप सर्वर से कनेक्ट होते हैं, तो आपका एसएसएच क्लाइंट इस सर्वर को पहचान लेगा, क्योंकि आपने अपनी सार्वजनिक कुंजी को सेव किया है known_hosts। इसलिए, वास्तव में आपको चाहिए कभी नहीँ "हाँ" कहें जब एसएसएच क्लाइंट आपको बताता है "मेजबान की प्रामाणिकता स्थापित नहीं की जा सकती"। आपको हमेशा पहले सर्वर की सार्वजनिक कुंजी जोड़नी चाहिए। - Utku
@Savara यदि आप ऐसा करते हैं, तो आपको पता चलेगा कि कुछ एसएसएच क्लाइंट आपको बताता है कि "क्लाइंट की प्रामाणिकता स्थापित नहीं की जा सकती" या जब यह आपको बताता है कि "सर्वर की सार्वजनिक कुंजी बदल दी गई है"। इसलिए, आपको हमेशा सर्वर की सार्वजनिक कुंजी जोड़ना चाहिए ~/.ssh/known_hosts फ़ाइल पहले से और कभी नहीँ हाँ कहें जब आपका एसएसएच क्लाइंट आपको "क्लाइंट की प्रामाणिकता स्थापित नहीं की जा सकती" या जब यह आपको बताती है कि "सर्वर की सार्वजनिक कुंजी बदल दी गई है"। - Utku
हाँ, मुझे पूरी तरह से पता है कि एसएसएच फिंगरप्रिंट देखने के यांत्रिकी कैसे काम करते हैं, लेकिन उस समय का एक बड़ा प्रतिशत आपके पास किसी अन्य चैनल के माध्यम से फिंगरप्रिंट प्राप्त करने का विकल्प नहीं है। टीओएफयू दुखद रूप से सबसे अच्छा है जिसे हम अक्सर प्राप्त करते हैं। - Savara
"हाँ" का जवाब देने के बाद भी प्रामाणिकता की जांच करने का कोई तरीका है? - exchange


आप सार्वजनिक कुंजी के लिए एक फिंगरप्रिंट उत्पन्न कर सकते हैं ssh-keygen इस तरह:

ssh-keygen -lf /path/to/key.pub

कंक्रीट उदाहरण (यदि आप आरएसए सार्वजनिक कुंजी का उपयोग करते हैं):

$ ssh-keygen -lf ~/.ssh/id_rsa.pub
2048 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff /Users/username/.ssh/id_rsa.pub (RSA)

पहला भाग (2048) बिट्स में दूसरी लंबाई है, दूसरा भाग (00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff) सार्वजनिक कुंजी का फिंगरप्रिंट है और तीसरा हिस्सा सार्वजनिक कुंजी फ़ाइल का स्थान है।


79
2017-07-24 16:26



क्या आप जानते हैं कि 12 में अनुवाद कैसे करें: f8: 7e: 78: 61: b4: bf: e2: de: 24: 15: 96: 4e: d4: 72: 53 यह सार्वजनिक कुंजी से यह प्रारूप? - Kit Ho
@ किटहो मुझे यकीन नहीं है कि मैं आपका प्रश्न समझता हूं। मैंने उदाहरण के रूप में अद्यतन किया, जैसा कि मुझे लगता है ssh-keygen -lf आप जो चाहते हैं वह करेंगे। - Benjamin Oakes
जब एक नई मशीन में एसएसएच-आईएनजी, जो देखता है वह है नहीं उपयोगकर्ता की पब्की फिंगरप्रिंट, लेकिन होस्ट की पब्की फिंगरप्रिंट। तो प्रश्न के संदर्भ के लिए एक बेहतर उदाहरण है ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub। यह फिंगरप्रिंट दिखाता है जो एसएसएच लॉग इन पर स्थानीयहोस्ट पर भी दिखाया जाता है। - tanius
मेरे ssh-keygen की सूचना दी sha256 उंगलियों के निशान। पाने के लिए md5 फिंगरप्रिंट्स मैं भाग गया ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub। #archlinux - Justin C
(@JustinC) ओपनएसएसएच संस्करण 6.8 (मार्च 2015) और ऊपर SHA256 में बदल गया, डिफ़ॉल्ट रूप से हेक्स के बजाय बेस 64 में प्रदर्शित किया गया। ग्राहक के उपयोग के लिए ssh -o FingerprintHash=md5 या समकक्ष में ssh_config और उन चीजों पर जो उपयोग करते हैं ssh पसंद scp। - dave_thompson_085


फिंगरप्रिंट बेस 64-एन्कोडेड सार्वजनिक कुंजी का MD5 है।

$ ssh-keygen -f foo
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in foo.
Your public key has been saved in foo.pub.
The key fingerprint is:
65:30:38:96:35:56:4f:64:64:e8:e3:a4:7d:59:3e:19 andrew@localhost
The key's randomart image is:
+--[ RSA 2048]----+
|       +*..+*    |
|      =. +.=     |
|     . . .o .    |
|         o+   E  |
|        S= . + o |
|        . o o +  |
|           .   . |
|                 |
|                 |
+-----------------+
$ cat foo.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp andrew@localhost
$ echo 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp' \
    | base64 -D | md5
6530389635564f6464e8e3a47d593e19

Md5sum 6530389635564f6464e8e3a47d593e19 फिंगरप्रिंट प्रदर्शित होता है कुंजी उत्पन्न होती है, केवल अलग कॉलन के बिना।


हालांकि, अगर आप फिंगरप्रिंट से निपट रहे हैं जो अमेज़ॅन ईसी 2 कुंजी जोड़े कंसोल में दिखाता है, दुर्भाग्य से यह एक अलग जानवर हो सकता है। यदि यह 32-अंकों वाली हेक्स स्ट्रिंग है, तो यह मानक MD5 SSH सार्वजनिक कुंजी फिंगरप्रिंट ऊपर है। लेकिन अगर यह 40 हेक्स अंक है, तो यह वास्तव में एक एसएचए 1 ले कर एक फिंगरप्रिंट गणना की जाती है निजी चाबी पीकेसीएस # 8 प्रारूप में:

$ openssl pkcs8 -in foo -nocrypt -topk8 -outform DER | openssl sha1 -c
e2:77:39:d3:53:a7:62:68:5f:da:82:0e:99:61:30:64:a2:88:c4:58

57
2018-02-08 20:40



मुझे यह उत्तर निम्नलिखित परिदृश्य में सहायक पाया गया। फिंगरप्रिंट की गणना करने के लिए आपका सिस्टम SHA1 का उपयोग करता है, लेकिन आपके मित्र का उपयोग md5 है। मैंने एक फिंगरप्रिंट साझा किया जो SHA1 था और यह उसके सिस्टम उत्पन्न एमडी 5 से मेल नहीं खाता था। इससे मदद मिली - धन्यवाद! sed's s ^ ^ ssh-rsa || ' /etc/ssh/ssh_host_rsa_key.pub | sed's | ==। * $ | == | ' | बेस 64-डी | md5sum - Liczyrzepa
यह समझने में बेहद प्रासंगिक है कि यह फिंगरप्रिंट DNS एसएसएचएफपी रिकॉर्ड में उनसे मेल नहीं खाएगा, क्योंकि वे SHA-1 या SHA-256 डायजेस्ट का उपयोग करते हैं। - neirbowj
@Liczyrzepa प्रकाशन प्रकार फ़ील्ड कुंजी प्रकार और बिटसाइट के आधार पर अंत में '==' हो सकता है या नहीं; सुरक्षित और आईएमओ का उपयोग करना आसान है awk '{print $2}' /path/to/keyfile.pub या इसी के समान। - dave_thompson_085
यह एकमात्र उत्तर है जो बताता है कि फिंगरप्रिंट की गणना कैसे की जाती है - greuze
हालांकि लिनक्स मिंट में कमांड है: cat id_rsa.pub | cut -d' ' -f2 | base64 -d | md5sum - greuze


ssh-keygen -r host.name.com

एक एसएसडीडी उदाहरण पर सभी कॉन्फ़िगर की गई सार्वजनिक कुंजी के लिए फिंगरप्रिंट आउटपुट करेगा।

इन्हें तब रखा जा सकता है डीएनएस एसएसएचएफपी रिकॉर्ड।


0
2017-11-26 04:32