सवाल मेरा ओपनएसएसएच कुंजी फिंगरप्रिंट एडब्ल्यूएस ईसी 2 कंसोल कीपैयर फिंगरप्रिंट से मेल नहीं खाता है?


जब मैं अपनी ओपनएसएसएच सार्वजनिक कुंजी को एडब्ल्यूएस ईसी 2 की फिंगरप्रिंट की कुंजीिंग में आयात करता हूं कि एडब्ल्यूएस शो जो मैं देखता हूं उससे मेल नहीं खाता है:

ssh-keygen -l -f my_key

यह एक अलग लंबाई है और अलग बाइट्स है।

क्यूं कर? मुझे यकीन है कि मैंने सही कुंजी अपलोड की है।


63
2018-06-10 04:28


मूल




जवाब:


एडब्ल्यूएस ईसी 2 एसएसएच 2 फिंगरप्रिंट दिखाता है, ओपनएसएसएच फिंगरप्रिंट सभी को उम्मीद नहीं है। यह यूआई में यह नहीं कहता है।

यह भी दिखाता है दो पूरी तरह से विभिन्न प्रकार के फिंगरप्रिंट इस पर निर्भर करता है कि एडब्ल्यूएस पर कुंजी उत्पन्न हुई थी या डाउनलोड की गई थी, या आपने अपनी सार्वजनिक कुंजी अपलोड की है या नहीं।

फिंगरप्रिंट के साथ उत्पन्न किया

ssh-keygen -l -f id_rsa

मर्जी नहीं मैच ईसी 2 दिखाता है। आप या तो फिंगरप्रिंट उत्पन्न करने के लिए एडब्ल्यूएस एपीआई टूल्स का उपयोग कर सकते हैं ec2-fingerprint-key आदेश, या इसे करने के लिए ओपनएसएसएल का उपयोग करें।

ध्यान दें कि यदि आपने मूल रूप से एडब्ल्यूएस पर एक कुंजी उत्पन्न की है, लेकिन फिर इसे फिर से अपलोड करें (कहें, दूसरे क्षेत्र में) तो आपको एक मिल जाएगा अलग फिंगरप्रिंट क्योंकि यह एसएएच 2 आरएसए फिंगरप्रिंट लेगा, sha1 के बजाय यह आपके द्वारा एडब्ल्यूएस पर उत्पन्न कुंजी के लिए दिखाता है।

मज़ा, अरे? This screenshot has two copies of the same key in it with different fingerprints

ऊपरोक्त में, test-generated एडब्ल्यूएस ईसी 2 का उपयोग करके उत्पन्न किया गया था। test-generated-reuploaded निजी कुंजी एडब्ल्यूएस उत्पन्न की गई सार्वजनिक कुंजी है, जिसके साथ निकाला गया है ssh-keygen -y और फिर से अपलोड किया। तीसरी कुंजी, test-uploaded, स्थानीय रूप से जेनरेट की गई कुंजी है ... लेकिन स्थानीय ssh-keygen -l फिंगरप्रिंट है b2:2c:86:d6:1e:58:c0:b0:15:97:ab:9b:93:e7:4e:ea

$ ssh-keygen -l -f theprivatekey
2048 b2:2c:86:d6:1e:58:c0:b0:15:97:ab:9b:93:e7:4e:ea
$ openssl pkey -in theprivatekey -pubout -outform DER | openssl md5 -c
Enter pass phrase for id_landp:
(stdin)= 91:bc:58:1f:ea:5d:51:2d:83:d3:6b:d7:6d:63:06:d2

कुंजी स्थानीय रूप से उत्पन्न की गई

आप ओपनएसएसएल का उपयोग कर सकते हैं एडब्ल्यूएस मंचों पर डैनियल द्वारा प्रदर्शित किया गया, अपलोड की गई सार्वजनिक कुंजी (एसएसएच 2 एमडी 5) के लिए फिंगरप्रिंट दिखाने के लिए एडब्ल्यूएस द्वारा प्रयुक्त फॉर्म में फिंगरप्रिंट उत्पन्न करने के लिए, जैसे:

7a:58:3a:a3:df:ba:a3:09:be:b5:b4:0b:f5:5b:09:a0

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

openssl pkey -in id_rsa -pubout -outform DER | openssl md5 -c

एडब्ल्यूएस पर उत्पन्न कुंजी

यदि एडब्ल्यूएस कंसोल पर दिखाया गया मुख्य फिंगरप्रिंट लंबा है तो यह एडब्ल्यूएस पर उत्पन्न एक निजी कुंजी थी, जैसे:

ea:47:42:52:2c:25:43:76:65:f4:67:76:b9:70:b4:64:12:00:e4:5a

इस मामले में आपको निजी कुंजी पर आधारित sha1 हैश उत्पन्न करने के लिए, एडब्लूएस मंचों पर डैनियल द्वारा दिखाए गए निम्न आदेश का उपयोग करने की आवश्यकता है:

openssl pkcs8 -in aws_private.pem -nocrypt -topk8 -outform DER | openssl sha1 -c

डाउनलोड एडब्लूएस-जेनरेट की गई निजी कुंजी / प्रमाणपत्र फ़ाइल पर। यह आपके द्वारा ओपनएसएसएच प्रारूप में कनवर्ट की जाने वाली कुंजियों पर भी काम करेगा।

संदर्भ

देख:


92
2018-06-10 04:28



इसके बारे में एडब्ल्यूएस से लापता स्पष्टता से दुखी, वे एक संभावित सुरक्षा उल्लंघन खोल रहे हैं जिससे कुंजी को सत्यापित करना कठिन हो जाता है - Jaime Hablutzel
बहुत बढ़िया जवाब! प्रारंभिक पर ssh आदेश, अधिक हाल के संस्करणों के साथ आपको एमडी 5 प्रारूप निर्दिष्ट करने के लिए ए-ई विकल्प की आवश्यकता है: ssh-keygen -E md5 -l -f id_rsa। - RichVel


यदि आपके पास केवल सार्वजनिक कुंजी है, तो आप निम्नानुसार AWS फ़िंगरप्रिंट उत्पन्न कर सकते हैं:

ssh-keygen -e -f id_rsa.pub -m pkcs8 | openssl pkey -pubin -outform der | openssl md5 -c

9
2018-02-17 13:28





एडब्ल्यूएस दस्तावेज़ों पर एक संसाधन है http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#verify-key-pair-fingerprints

यदि आपने एडब्ल्यूएस का उपयोग करके अपनी कुंजी जोड़ी बनाई है, तो आप निजी कुंजी फ़ाइल से फिंगरप्रिंट उत्पन्न करने के लिए ओपनएसएसएल टूल्स का उपयोग कर सकते हैं:

प्रतिलिपि

$ openssl pkcs8 -in path_to_private_key -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c

यदि आपने अपनी कुंजी जोड़ी को किसी तृतीय-पक्ष टूल का उपयोग करके बनाया है और एडब्ल्यूएस को सार्वजनिक कुंजी अपलोड की है, तो आप अपनी स्थानीय मशीन पर निजी कुंजी फ़ाइल से फिंगरप्रिंट उत्पन्न करने के लिए ओपनएसएसएल टूल्स का उपयोग कर सकते हैं:

प्रतिलिपि

$ openssl rsa -in path_to_private_key -pubout -outform DER | openssl md5 -c

आउटपुट को कंसोल में प्रदर्शित होने वाले फिंगरप्रिंट से मेल खाना चाहिए।


2
2018-06-20 08:27





पाइथन का उपयोग कर हममें से उन लोगों के लिए

from Crypto.PublicKey import RSA
import hashlib
import base64

#Load your key from disk, or a string, or generate.
my_key = RSA.importKey(open(my_rsa_private_key, 'r').read())

# Normal md5 fingerprint
fp_plain = hashlib.md5(base64.b64decode(my_key.exportKey('OpenSSH').strip().split()[1].encode('ascii'))).hexdigest()
print ':'.join(a+b for a,b in zip(fp_plain[::2], fp_plain[1::2]))

#AWS' EC2 fingerprint
public_only_key = RSA.importKey(my_key.exportKey('OpenSSH'))
fp_plain = hashlib.md5(public_only_key.exportKey('DER')).hexdigest()
print ':'.join(a+b for a,b in zip(fp_plain[::2], fp_plain[1::2]))

1
2018-02-08 22:37



दुर्भाग्यवश यह मेरे लिए मैकोज़ 10.11 पर नवीनतम होमब्री पायथन 2.7.13 का उपयोग कर इस त्रुटि के साथ विफल रहा: ValueError: PEM encryption format not supported. - RichVel
@RichVel, मैं त्रुटि पुन: उत्पन्न नहीं कर सकता। मैंने अभी परीक्षण किया है मैकोज़ 10.12 पर होमब्री पायथन 2.7.13 वर्चुअलनव में, और यह ठीक काम करता है। अगर मुझे लगता है, शायद आपके लिए pycrypto के लिए सी आवश्यकताओं में से कुछ नहीं मिले थे। शायद इस मदद हो सकती है? - Andy


यही है वह जो मेरे द्वारा उपयोग किया जाता है:

openssl rsa -RSAPublicKey_in -in <(ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PEM) -inform PEM -outform DER 2>/dev/null | openssl md5 -c | awk '{print $2}'

यह उपरोक्त में से कुछ के समान, सार्वजनिक कुंजी से फिंगरप्रिंट उत्पन्न करता है।


1
2017-09-10 13:29





#!/bin/bash
key_file=$1
if [[ -n $key_pub_file ]]; then
    ssh-keygen -e -f $key_pub_file -m pkcs8 | openssl pkey -pubin -outform der | openssl md5 -c
else
    echo "pass the pub file as argument"
fi

यहां एक स्क्रिप्ट है जिसका मैं उपयोग करता हूं, env के लिए स्क्रिप्ट पथ जोड़ें। उत्तर के लिए जेडो के लिए धन्यवाद


1
2018-06-25 06:59





अगर यह उपयोगी हो सकता है: https://ssh-vault.com/post/fingerprint/

उदाहरण के लिए:

$ ssh-vault -u bob -f

एडब्ल्यूएस प्रारूप का उपयोग कर रहे उपयोगकर्ता बॉब के लिए फिंगरप्रिंट प्रिंट करेगा।


0
2017-10-10 15:05