RSA कुंजी फिंगरप्रिंट की गणना करें


903

मुझे GitHub के लिए SSH कुंजी ऑडिट करने की आवश्यकता है, लेकिन मुझे यकीन नहीं है कि मेरे आरएसए कुंजी फिंगरप्रिंट को कैसे ढूंढें। मैंने मूल रूप से लिनक्स पर एक एसएसएच कुंजी उत्पन्न करने के लिए एक गाइड का पालन किया।

अपने वर्तमान RSA कुंजी फिंगरप्रिंट को खोजने के लिए मुझे कौन सी कमांड दर्ज करने की आवश्यकता है?


21
एफडब्ल्यूआईडब्ल्यू, मैं इस पद पर वापस आ रहा हूं क्योंकि जीथब वह जगह है जहां मैं चाबियों पर उंगलियों के निशान देखता हूं और मैं यह सुनिश्चित करना चाहता हूं कि मैं इसी निजी कुंजी का उपयोग कर रहा हूं। हो सकता है कि यह एक github टैग वारंट करता है क्योंकि यह पोस्ट उस github से संबंधित पूछताछ में मदद करता है?
21

4
@ हैमक्स 0r मैं इस पद पर वापस आया क्योंकि गीताब उन उँगलियों के निशान का भी इस्तेमाल करता है ...
Ray Foss

1
मैं ट्रैविस की वजह से आया था, जो इसका उपयोग भी करता है। : डी
प्रति लंडबर्ग

4
लिनक्स का उपयोग करने वाले उन सभी लोगों के लिए जो "इस पृष्ठ पर वापस आते रहते हैं", इसे अपने bashrc पर कॉपी करें: function fingerprint() { ssh-keygen -lf $1 -E md5 }फिर ( आपके द्वारा bashrc स्रोत के बाद) आप के साथ एक फिंगरप्रिंट प्राप्त कर सकते हैंfingerprint ~/.ssh/key_file
Jeff Diederiks

1
@JeffDiederiks की कोशिश करने वालों के लिए और यह सोचकर कि यह काम क्यों नहीं कर रहा है, बैश कार्यों ;को शरीर में एक अनुगामी की आवश्यकता होती है, इसलिए function fingerprint() { ssh-keygen -lf $1 -E md5; }इसके बजाय उपयोग करें ।
tjjfvi

जवाबों:


1260

अपनी SSH कुंजी के SHA256 फिंगरप्रिंट ( -lनई सूची बनाने के बजाय "सूची" का -fअर्थ है , "फ़ाइल नाम" का अर्थ निकालने के लिए निम्न आदेश चलाएँ ):

$ ssh-keygen -lf /path/to/ssh/key

इसलिए उदाहरण के लिए, मेरी मशीन पर मेरे द्वारा चलाया गया कमांड था (RSA सार्वजनिक कुंजी का उपयोग करके):

$ 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)

Ssh-keygen के नए संस्करणों के साथ GitHub (MD5) फिंगरप्रिंट प्रारूप प्राप्त करने के लिए, रन करें:

$ ssh-keygen -E md5 -lf <fileName>

बोनस की जानकारी:

ssh-keygen -lfभी पर काम करता है known_hostsऔर authorized_keysफ़ाइलों।

लिनक्स / यूनिक्स / ओएस एक्स सिस्टम पर अधिकांश सार्वजनिक कुंजी खोजने के लिए, चलाएं

$ find /etc/ssh /home/*/.ssh /Users/*/.ssh -name '*.pub' -o -name 'authorized_keys' -o -name 'known_hosts'

(यदि आप अन्य उपयोगकर्ताओं के होमडायर के अंदर देखना चाहते हैं, तो आपको रूट या sudo होना पड़ेगा।)

ssh-add -lबहुत समान है, लेकिन अपने एजेंट को जोड़ा गया कुंजी की उंगलियों के निशान सूचीबद्ध करता है। (OS X उपयोगकर्ता ध्यान दें कि Keychain के माध्यम से मैजिक पासवर्ड रहित SSH, ssh-agent का उपयोग करने के समान नहीं है।)


5
मुझे कैसे पता चलेगा कि रास्ता क्या है?
pal4life

4
चूँकि आपका उदाहरण हेक्स फिंगरप्रिंट 32 अंकों का है, मेरा मानना ​​है कि यह एमडी 5 फिंगरप्रिंट होगा, सही है? जैसा कि 40 अंकों के फिंगरप्रिंट का विरोध किया जाता है, जो
culix

8
गैर Ubuntu सिस्टम पर प्रासंगिक फ़ाइल में हो सकता है / etc / ssh, जैसे /etc/ssh/ssh_host_rsa_key.pub
जोरावर

12
एक सार्वजनिक / निजी कीपर में दोनों कुंजियों के लिए फिंगरप्रिंट समान होना चाहिए इसलिए फिंगरप्रिंट का उपयोग .ssh/id_rsaउसी के लिए होना चाहिए .ssh/id_rsa.pub। तो, आप या तो एक का उपयोग कर सकते हैं (और, यदि आप मेरे जैसे हैं और टैब-पूरा करना पसंद करते हैं, तो यह काम को 2 कम सिस्ट्रोक्स लेता है। दक्षता!)।
पार्थियन

25
उपयोग ssh-keygen -E md5 -lf ~/.ssh/id_rsa.pubआप मानक नहीं चाहते हैं तो SHA256 उत्पादन
user8162

675

नए SSH कमांड SHA256 कुंजी के रूप में उंगलियों के निशान की सूची देंगे ।

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

ssh-keygen -lf ~/.ssh/id_dsa.pub 
1024 SHA256:19n6fkdz0qqmowiBy6XEaA87EuG/jgWUr44ZSBhJl6Y (DSA)

यदि आपको एक पुराने फिंगरप्रिंट के खिलाफ इसकी तुलना करने की आवश्यकता है, तो आपको एमडी 5 फिंगरप्रिंट हैशिंग फ़ंक्शन का उपयोग करने के लिए निर्दिष्ट करने की आवश्यकता है ।

ssh-keygen -E md5 -lf ~/.ssh/id_dsa.pub
2048 MD5:4d:5b:97:19:8c:fe:06:f0:29:e7:f5:96:77:cb:3c:71 (DSA)

भी उपलब्ध: -E sha1

अद्यतन ... हाँ ... हाँ ... मुझे पता है ... SSH के लिए DSA कुंजियों का उपयोग नहीं किया जाना चाहिए, पुराने RSA कुंजी या नए ecliptic कुंजियों का उपयोग किया जाना चाहिए।

उन 'प्रशंसा' के लिए, जो मैं ऊपर दिए गए कमांड का उपयोग करता हूं। इसे बदल दें! आप कमांड बनाते हैं और परिणामस्वरूप आउटपुट मिस-मैच करते हैं!


6
यह यहाँ ध्यान देने योग्य है कि आप इस उत्तर में बताए अनुसार sshआपको सर्वर के पुराने एमडी 5 फिंगरप्रिंट का उपयोग करने के लिए कह सकते हैं । (मैं बस उस के लिए खोज कर रहा था, और इस जवाब ने मुझे उस एक की ओर अग्रसर किया, इसलिए मुझे लगता है कि दूसरों को एक समान अनुभव हो सकता है।)ssh -o FingerprintHash=md5 example.org
जोनाथन वाई।

25
यह उत्तर उन लोगों के लिए सबसे अधिक उपयोगी है, जो अपनी कुंजी की तुलना करने के इच्छुक हैं, जो github.com दिखाता है (यानी MD5 को हेक्स में स्वरूपित किया गया है)
हैमक्स 0r

2
पोटीन क्या रिपोर्ट करेगा के खिलाफ तुलना करने के लिए भी बहुत उपयोगी है।
pjcard

27

Ubuntu पर अपनी कुंजी देखने के लिए, बस अपने टर्मिनल पर निम्न कमांड दर्ज करें:

ssh-add -l

आपको इस तरह एक आउटपुट मिलेगा: 2568 0j:20:4b:88:a7:9t:wd:19:f0:d4:4y:9g:27:cf:97:23yourName @ ubuntu (RSA)

हालाँकि अगर आपको कोई त्रुटि मिलती है जैसे; Could not open a connection to your authentication agent.
तब इसका मतलब है कि ssh- एजेंट नहीं चल रहा है। आप इसे शुरू / चला सकते हैं: ssh-agent bash(टिप्पणियों में @Richard के लिए धन्यवाद) और फिर पुनः चलाएंssh-add -l


5
यदि आप उबंटू पर नहीं हैं, तो आप इसे दुर्भाग्य से प्राप्त कर सकते हैं "आपके प्रमाणीकरण एजेंट के लिए कनेक्शन नहीं खोल सकता है।"
रॉगरडैक

1
यह तभी काम करता है जब आपके पास प्रमाणीकरण एजेंट चल रहा हो।
रफ़लविंड

प्रमाणीकरण एजेंट को चलाने के लिए आप उपयोग कर सकते हैं ssh-agent bashऔर जीवन के साथ आगे बढ़ सकते हैं । जीवन में हमेशा की तरह; ssh-agentसभी प्रणालियों पर एक सुसंगत कार्यान्वयन के रूप में गारंटी नहीं दी जाती है।
रिचर्ड केनेथ निस्सीसोर

लिनक्स के लिए एक और टिप; विकल्प- s-keygen-g3 का -F (डंप फिंगरप्रिंट) कुंजी के फिंगरप्रिंट को प्रदर्शित करेगा: $ ssh-keygen-g3 -F /path/to/keyfile.pub answers.ssh.com/questions-494/…
ऐनी.इगाइल

18

एक प्रमुख जोड़ी (निजी और सार्वजनिक कुंजी) में एक ही फिंगरप्रिंट होगा; इसलिए मामले में आप यह नहीं याद रख सकते हैं कि कौन सी निजी कुंजी किस सार्वजनिक कुंजी से संबंधित है, उनकी उंगलियों के निशान की तुलना करके मैच ढूंढें।

मार्विन विंटो का सबसे मत वाला उत्तर सार्वजनिक SSH कुंजी फ़ाइल का फिंगरप्रिंट प्रदान करता है । इसी निजी SSH कुंजी के फिंगरप्रिंट को भी क्वियर किया जा सकता है, लेकिन इसके लिए लंबी श्रृंखला की आवश्यकता होती है, जैसा कि नीचे दिखाया गया है।

  1. SSH एजेंट को लोड करें, यदि आपने ऐसा नहीं किया है। सबसे आसान तरीका है आह्वान

    $ ssh-agent bash
    

    या

    $ ssh-agent tcsh
    

    (या एक और शेल जिसका आप उपयोग करते हैं)।

  2. उस निजी कुंजी को लोड करें जिसे आप परीक्षण करना चाहते हैं:

    $ ssh-add /path/to/your-ssh-private-key
    

    यदि कुंजी पासवर्ड से सुरक्षित है तो आपको पासफ़्रेज़ दर्ज करने के लिए कहा जाएगा।

  3. अब, जैसा कि दूसरों ने कहा है, टाइप करें

    $ ssh-add -l
    1024 fd:bc:8a:81:58:8f:2c:78:86:a2:cf:02:40:7d:9d:3c you@yourhost (DSA)
    

    fd:bc:...फिंगरप्रिंट आप के बाद कर रहे हैं। यदि एकाधिक कुंजियाँ हैं, तो कई लाइनें मुद्रित की जाएंगी, और अंतिम पंक्ति में अंतिम लोड की गई कुंजी का फिंगरप्रिंट शामिल है।

  4. यदि आप एजेंट को रोकना चाहते हैं (यानी, यदि आपने ऊपर चरण 1 को लागू किया है), तो शेल पर बस 'बाहर निकलें' टाइप करें, और आप ssh एजेंट के लोडिंग से पहले शेल पर वापस आ जाएंगे।

मैं नई जानकारी नहीं जोड़ता, लेकिन उम्मीद है कि यह उत्तर सभी स्तरों के उपयोगकर्ताओं के लिए स्पष्ट है।


पहला पैराग्राफ असत्य है, ssh-add -lऔर ssh-keygen -lकिसी दिए गए कीपेयर के लिए एक ही फिंगरप्रिंट लौटाएं। इसके अलावा, यह एक लोअरकेस होना चाहिए -l, अपरकेस नहीं।
अल्बर्टस एजजेव्स

मैं ऐसा नहीं करता ssh-add -lऔर ssh-keygen -lकिसी दिए गए कीपेयर के लिए उसी फिंगरप्रिंट को वापस करता हूं । लेकिन मुझे समझ नहीं आता कि पहले पैराग्राफ पर मेरे मूल बयानों में क्या गलत था। मैंने स्पष्ट करने के लिए एक वाक्य जोड़ा।
विरवान पुरवंतो २५'१५

1
एजेंट शुरू करने के बजाए, ssh-keygen को इंगित करने के लिए यह सिम्पर है, फिर कुंजी लोड करें, फिर फिंगरप्रिंट प्राप्त करें।
अल्बर्टस एजजेव्स

1
यदि आपके पास केवल निजी कुंजी है, तो आपको चलाने की आवश्यकता नहीं है ssh-agent। मान PRIVKEYलिया गया है कि निजी कुंजी फ़ाइल PUBKEYमें सेट कर दिया गया है , और (शुरुआत में कोई नहीं) सार्वजनिक कुंजी फ़ाइल में सेट किया गया है, करें: ssh-keygen -y -f "${PRIVKEY}" > "${PUBKEY}"SSH सार्वजनिक कुंजी को पुनः प्राप्त करने के लिए, फिर ssh-keygen -E md5 -l -v -f "${PUBKEY}"यदि आप MD5 हैश चाहते हैं या ssh-keygen -l -v -f "${PUBKEY}"यदि आप SHA-256 हैश चाहते हैं (SHA-256 अभी डिफ़ॉल्ट है)।
डेविड टोनहोफर

12

सबसे तेज़ तरीका है अगर आपकी चाबियाँ SSH एजेंट में हैं:

$ ssh-add -L | ssh-keygen -E md5 -lf /dev/stdin

एजेंट की प्रत्येक कुंजी इस प्रकार मुद्रित की जाएगी:

4096 MD5:8f:c9:dc:40:ec:9e:dc:65:74:f7:20:c1:29:d1:e8:5a /Users/cmcginty/.ssh/id_rsa (RSA)

3
मेरे GitHub खाते पर उन लोगों के खिलाफ मेरी कुंजी से मिलान करने का एक तेज़ तरीका चाहिए और इस उत्तर ने मुझे ऐसा करने में मदद की।
11

11

AWS फ़ोरम की सामग्री को यहाँ फिर से प्रस्तुत करना, क्योंकि मुझे यह मेरे उपयोग के मामले में उपयोगी लगी - मैं जाँच करना चाहता था कि मेरी कौन सी कुंजी AWS में आयात की गई थी।

openssl pkey -in ~/.ssh/ec2/primary.pem -pubout -outform DER | openssl md5 -c

कहाँ: - primary.pemजाँच करने के लिए निजी कुंजी है


9
$ ssh-add -l 

Mac OS X v10.8 (माउंटेन लायन) - v10.10 (Yosemite) पर भी काम करेगा ।

यह -Eफिंगरप्रिंट प्रारूप को निर्दिष्ट करने के विकल्प का भी समर्थन करता है, इसलिए एमडी 5 की आवश्यकता है (यह अक्सर उपयोग किया जाता है, उदाहरण के लिए गिटहब द्वारा), बस -E md5कमांड में जोड़ें ।


सरलतम उत्तर के लिए +1। से man ssh-addविकल्प -lहै "सभी पहचान की सूचियां उंगलियों के निशान वर्तमान में एजेंट द्वारा प्रतिनिधित्व"
XavierStuvw

8

Windows पर, आप चला रहे हैं पुट्टी / तमाशा, फिंगरप्रिंट सूचीबद्ध है जब आप अपने पुट्टी (.ppk) तमाशा में कुंजी लोड। यह बहुत उपयोगी है यदि आप भूल जाते हैं कि आप किसका उपयोग कर रहे हैं।

यहां छवि विवरण दर्ज करें


3
धन्यवाद, कभी-कभी हमें लिनक्स के लोग विंडोज़ के बारे में भूल जाते हैं, खासकर ओपी ने पोटीन का उल्लेख किया है।
जोंस

@ दिमित्री 1111 आपने ब्लैक पब्लिक की को क्यों पेंट किया क्योंकि यह पूरी दुनिया को पता है?
मिकूका93

8

यह वह फ़ंक्शन है जो मैं DigitalOcean बूंदों को बनाने के लिए मेरी SSH कुंजी फिंगर प्रिंट प्राप्त करने के लिए उपयोग करता हूं :

fingerprint() {
    pubkeypath="$1"
    ssh-keygen -E md5 -lf "$pubkeypath" | awk '{ print $2 }' | cut -c 5-
}

इसे अपने ~/.bashrcस्रोत में रखें , इसे सोर्स करें, और फिर आप फिंगर प्रिंट प्राप्त कर सकते हैं:

$ fingerprint ~/.ssh/id_rsa.pub
d2:47:0a:87:30:a0:c0:df:6b:42:19:55:b4:f3:09:b9

2

यदि आपका SSH एजेंट चल रहा है, तो यह है

ssh-add -l

सभी पहचान की RSA उंगलियों के निशान, या -Lसार्वजनिक कुंजी सूचीबद्ध करने के लिए।

यदि आपका एजेंट नहीं चल रहा है, तो कोशिश करें:

ssh-agent sh -c 'ssh-add; ssh-add -l'

और आपकी सार्वजनिक कुंजी के लिए:

ssh-agent sh -c 'ssh-add; ssh-add -L'

यदि आपको संदेश मिलता है: ' एजेंट की कोई पहचान नहीं है। ', तो आपको पहले अपनी RSA कुंजी जनरेट करनी होगी ssh-keygen


मैंने ओपनश को स्थापित किया, फिर पोटीन का उपयोग करके सर्वर से कनेक्ट करने का प्रयास किया। यह एक ssh-ed25519 256 कुंजी फिंगरप्रिंट प्रस्तुत कर रहा है, लेकिन मुझे "कोई पहचान नहीं" संदेश मिल रहा है। क्या आप जानते हैं कि इस कुंजी को कहाँ पाया और सूचीबद्ध किया जा सकता है? क्या इस कुंजी का उपयोग करने के लिए एक नकारात्मक पहलू है, बनाम एक नया आरएसए कुंजी उत्पन्न करना?
lordcheeto

के तहत मिला /etc/ssh/ssh_host_ed25519_key.pub। सवाल का दूसरा हिस्सा रहता है: इस ऑटो उत्पन्न कुंजी का उपयोग करने के लिए कोई नकारात्मक पहलू?
लॉर्डचेतो

1

कभी-कभी आपके पास अपनी ~/.sshनिर्देशिका में कुंजियों का एक गुच्छा हो सकता है , और न जाने कौन सा GitHub / Gitlab / etc द्वारा दिखाए गए फिंगरप्रिंट से मेल खाता है।

अपनी ~/.sshनिर्देशिका में सभी कुंजी के फ़ाइलनाम और MD5 फिंगरप्रिंट दिखाने का तरीका यहां दिया गया है :

cd ~/.ssh
find . -type f -exec printf "\n{}\n" \; -exec ssh-keygen -E md5 -lf {} \;

(पैरामीटर का क्या अर्थ है, इस उत्तर के बारे में findकमांड के बारे में बताएं ।

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


0

Google Compute Engine Linux उदाहरण के SSH होस्ट कुंजी फिंगरप्रिंट को आउटपुट में दिखाता है। एपीआई जीसीई से उस डेटा को प्राप्त कर सकता है, और उदाहरण के लिए लॉग इन करने की आवश्यकता नहीं है।

मैं इसे कहीं और नहीं मिला, लेकिन धारावाहिक आउटपुट से। मुझे लगता है कि फिंगरप्रिंट कुछ और प्रोग्रामर-फ्रेंडली जगह पर होना चाहिए।

हालांकि, ऐसा लगता है कि यह एक उदाहरण के प्रकार पर निर्भर करता है। मैं डेबियन 7 (व्हीजी) एफ 1-माइक्रो के उदाहरणों का उपयोग कर रहा हूं।


-1

पहले कनेक्शन से पहले एक दूरस्थ एसएसएच सर्वर की जांच करने के लिए, आप सर्वर के सभी SHH कुंजी को देखने के लिए www.server-stats.net/ssh/ पर एक नज़र दे सकते हैं , साथ ही जब कुंजी ज्ञात हो।

यह एक एसएसएल प्रमाणपत्र की तरह नहीं है, लेकिन निश्चित रूप से पहली बार किसी भी एसएसएच सर्वर से जुड़ने से पहले करना चाहिए।


4
उपयोगकर्ता तृतीय-पक्ष वेबसाइट की तलाश नहीं कर रहा था, लेकिन ओएस से ही एक कमांड लाइन।
एंड्रयू बार्बर

तो, यह मूल रूप से अभिसरण प्लगइन है , एसएसएल के बजाय एसएसएच को छोड़कर, और केवल एक (कुछ iffy) नोटरी के साथ। सही के बारे में वह आवाज?
पार्थियन

-1

फेडोरा पर मैं [[~ ~ .ssh] का पता लगाता हूं जो मुझे बताता है कि @ हैं

/root/.ssh
/root/.ssh/authorized_keys

ओपी को पता है कि उनकी चाबियाँ कहां से मिल रही हैं (यह नहीं है, यह ~/.ssh/id*.pubहै) और अपनी उंगलियों के निशान प्राप्त करना चाहते हैं।
गर्ट वैन डेन बर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.