একটি এসএসএইচ কী ফিঙ্গারপ্রিন্ট কী এবং এটি কীভাবে উত্পন্ন হয়?


128

আমি সর্বদা খুঁজে পাই যে আমি যখন sshএকটি নতুন মেশিনে প্রবেশ করি তখন আমি এই বার্তাটি পাই :

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

এটা কি জন্য দাঁড়াবেন? প্রতিটি মেশিনে কি প্রতিবার একই ফিঙ্গারপ্রিন্ট থাকবে?

এই আঙুলের ছাপগুলি কীভাবে উত্পন্ন হয়? তারা কোন পরামিতিগুলির উপর নির্ভর করে?

উত্তর:


65

ফিঙ্গারপ্রিন্ট হোস্টের পাবলিক কী-এর উপর ভিত্তি করে, সাধারণত "/etc/ssh/ssh_host_rsa_key.pub" এর উপর ভিত্তি করে "সাধারণত আপনি এটি সংযোগ করছেন এমন হোস্টের সনাক্তকরণ / যাচাইকরণের জন্য।

যদি ফিঙ্গারপ্রিন্ট পরিবর্তন হয় তবে আপনি যে মেশিনে সংযোগ করছেন সেটি তাদের সর্বজনীন কী পরিবর্তন করেছে। এটি কোনও খারাপ জিনিস নাও হতে পারে (এসএসএস পুনরায় ইনস্টল করার পরে ঘটে) তবে এটি ইঙ্গিতও করতে পারে যে আপনি একই ডোমেন / আইপিতে একটি আলাদা মেশিনের সাথে সংযোগ করছেন (যখন আপনি লোড ব্যালান্সারের মতো কোনও কিছুর মাধ্যমে সংযোগ করছেন) বা আপনি যে একটি মধ্যবর্তী মধ্যের আক্রমণে লক্ষ্যবস্তু করা হচ্ছে, যেখানে আক্রমণকারী কোনওভাবে অন্য হোস্টের সাথে সংযোগ স্থাপনের জন্য আপনার এসএসএস সংযোগটি বাধিয়ে / পুনঃপ্রক্রিয়া করছে যা আপনার ব্যবহারকারী / পিডব্লিউর স্নুপিং হতে পারে।

নীচের লাইন: যদি আপনি পরিবর্তিত ফিঙ্গারপ্রিন্ট সম্পর্কে সতর্ক হন তবে সাবধান হন এবং ডাবল চেক করুন যে আপনি কোনও নিরাপদ সংযোগের মাধ্যমে সঠিক হোস্টের সাথে আসলে সংযোগ করছেন। যদিও বেশিরভাগ সময় এটি নির্দোষ হয়, এটি কোনও সম্ভাব্য সমস্যার ইঙ্গিত হতে পারে

দেখুন: http://www.lysium.de/blog/index.php?/archives/186-How-to-get-ssh-server-fingerprint-inifications.html
এবং: http://en.wikedia.org/ উইকি / Public_key_fingerprint


5
"... সতর্ক থাকুন এবং ডাবল চেক করুন যে আপনি কোনও নিরাপদ সংযোগের উপর দিয়ে আসলে সঠিক হোস্টের সাথে সংযোগ করছেন" - বোকা প্রশ্ন, তবে আপনি কীভাবে এটি সহজেই করতে পারেন?
সাভারা

1
@ সাভারা আপনি যখন কোনও এসএসএইচ সার্ভারের সাথে সংযোগ করছেন যা আপনি আগে সংযুক্ত ছিলেন না, তখন আপনাকে সার্ভার প্রশাসকের কাছ থেকে এসএসএইচ সার্ভারের সর্বজনীন কীটির অনুরোধ করা উচিত। সার্ভার অ্যাডমিন আপনাকে পাঠ্যের একটি অংশ দেবে। আপনার এই পাঠ্যটি ফাইলে সংযুক্ত করা উচিত ~/.ssh/known_hosts। আপনি যখন সার্ভারের সাথে সংযোগ করবেন তখন এইভাবে, আপনার এসএসএইচ ক্লায়েন্ট এই সার্ভারটিকে স্বীকৃতি দেবে, যেহেতু আপনি এর সর্বজনীন কী এতে সংরক্ষণ করেছেন known_hosts। অতএব, এসএসএইচ ক্লায়েন্ট যখন আপনাকে "হোস্টের সত্যতা প্রতিষ্ঠিত করা যায় না" বলতে গেলে আসলে আপনার কখনই "হ্যাঁ" বলা উচিত নয় । আপনার আগে সর্বদা সার্ভারের সর্বজনীন কী যুক্ত করা উচিত।
উত্কু

@ সাভারা আপনি যদি এটি করেন, আপনি যখন জানতে পারবেন যে আপনার এসএসএইচ ক্লায়েন্ট যখন আপনাকে "ক্লায়েন্টের সত্যতা প্রতিষ্ঠিত করা যায় না" বা যখন এটি আপনাকে "সার্ভারের পাবলিক কী পরিবর্তন করা হয়েছে" বলে দেয় তখন ফিশিং কিছু চলছে। সুতরাং, আপনার ~/.ssh/known_hostsফাইলের সর্বদা আপনার সার্ভারের সর্বজনীন কীটি যুক্ত করা উচিত এবং যখন আপনার এসএসএইচ ক্লায়েন্ট আপনাকে "ক্লায়েন্টের সত্যতা প্রতিষ্ঠিত করা যায় না" বা যখন এটি আপনাকে বলেন "সার্ভারের পাবলিক কীটি করা হয়েছে তখন কখনই হ্যাঁ না বলা উচিত পরিবর্তিত "।
উত্কু

3
হ্যাঁ, এসএসএইচ ফিঙ্গারপ্রিন্টগুলি দেখার কৌশলগুলি কীভাবে কাজ করে তা সম্পর্কে আমি পুরোপুরি সচেতন, তবে বেশিরভাগ সময় আপনার কাছে অন্য চ্যানেলের মাধ্যমে ফিঙ্গারপ্রিন্ট পাওয়ার বিকল্প নেই। টফু দুঃখজনকভাবে আমরা প্রায়শই সেরা।
সাভারা

"হ্যাঁ" উত্তর দেওয়ার পরেও সত্যতা যাচাই করার কোনও উপায় আছে?
এক্সচেঞ্জ

104

আপনি এর 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)পাবলিক কীটির ফিঙ্গারপ্রিন্ট এবং তৃতীয় অংশটি পাবলিক কী ফাইলের অবস্থান।


আপনি কি 12: f8: 7e: 78: 61: b4: bf: e2: de: 24: 15: 96: 4e: d4: 72: 53 কে এই সরকারী কী থেকে এই ফর্ম্যাটটি অনুবাদ করতে চান?
কিট হো

@ কিটহো আমি নিশ্চিত না আমি আপনার প্রশ্নটি বুঝতে পেরেছি কিনা। আমি উদাহরণটি আপডেট করেছি, যেমনটি আমার মনে হয় ssh-keygen -lfআপনি যা চান তাই করবেন।
বেনজামিন

5
যখন কোনও নতুন মেশিনে এসএসএইচ-ইন-ইন করা হয়, তখন যা যা দেখায় তা কোনও ব্যবহারকারীর পাব্বি ফিঙ্গারপ্রিন্ট নয়, তবে হোস্টের পাব্বি ফিঙ্গারপ্রিন্ট। সুতরাং প্রশ্নের প্রসঙ্গে একটি ভাল উদাহরণ হ'ল ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub। এটি আঙুলের ছাপটি দেখায় যা লোকালহোস্টে এসএসএইচ লগিনগুলিতেও প্রদর্শিত হয়।
ট্যানিয়াস

57
আমার ssh-keygenরিপোর্ট করা sha256আঙুলের ছাপ md5আঙুলের ছাপ পেতে আমি দৌড়ে গেলাম ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub। #archlinux
জাস্টিন সি

5
(@ জাস্টিনসি) ওপেনএসএসএইচ সংস্করণগুলি 6.8 (মার্চ 2015) এবং এগুলি SHA256 এ পরিবর্তিত হয়েছে, এটি ডিফল্টরূপে হেক্সের চেয়ে বেস 64 এ প্রদর্শিত হবে। ক্লায়েন্টের ব্যবহারের জন্য ssh -o FingerprintHash=md5বা পছন্দ মতো ssh_configজিনিসগুলিতে এবং সমতুল্য । sshscp
dave_thompson_085

72

বেস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 এসএসএইচ পাবলিক কী ফিঙ্গারপ্রিন্ট above তবে এটি যদি 40 হেক্স সংখ্যা হয় তবে এটি পিকেসিএস # 8 ফর্ম্যাটে প্রাইভেট কীটির এসএএএল 1 গ্রহণ করে আসলে একটি ফিঙ্গারপ্রিন্ট গণনা করা হয় :

$ 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

1
আমি এই উত্তরটি নিম্নলিখিত দৃশ্যে সহায়ক বলে মনে করেছি। আপনার সিস্টেমটি ফিঙ্গারপ্রিন্ট গণনা করতে SHA1 ব্যবহার করে তবে আপনার বন্ধুর md5 ব্যবহার করে। আমি একটি ফিঙ্গারপ্রিন্ট ভাগ করেছিলাম যা SHA1 ছিল এবং এটি তার সিস্টেমের তৈরি MD5 এর সাথে মেলে না। এটি সাহায্য করেছে - আপনাকে ধন্যবাদ! সেড এর | sh এসএস-আরএসএ || ' /etc/ssh/ssh_host_rsa_key.pub | সেডস এর | ==। * $ | == | ' | বেস 64-ডি | md5sum
লিকিজার্জেপা

এই আঙুলের ছাপটি ডিএনএস এসএসএইচএফপি রেকর্ডগুলির সাথে মেলে না কেন তা বোঝার ক্ষেত্রে এটি অত্যন্ত প্রাসঙ্গিক, কারণ তারা SHA-1 বা SHA-256 হজম ব্যবহার করে।
neirbowj

1
@ লাইসিরজেপা কী-টাইপ এবং বিটসাইজের উপর নির্ভর করে সর্বশেষে '==' থাকতে পারে বা থাকতে পারে না; নিরাপদ এবং আইএমও ব্যবহার করা সহজ awk '{print $2}' /path/to/keyfile.pubবা অনুরূপ।
dave_thompson_085

13
এটি কেবলমাত্র উত্তর ব্যাখ্যা করেছেন যে কিভাবে ফিঙ্গারপ্রিন্ট গণনা করা হয়
greuze

2
তবে লিনাক্স মিন্টে কমান্ডটি হ'ল:cat id_rsa.pub | cut -d' ' -f2 | base64 -d | md5sum
গ্রেজ

13

আপনি যদি এসএসএইচ কী ফাইলটি পরীক্ষা করতে চান তবে এটি গিথুব দ্বারা "ডিপ্লোয় কী" হিসাবে উল্লিখিত হিসাবে একই কিনা তা দেখতে এটি আপনার জন্য ...

ব্যক্তিগত ইউআরএল থেকে: https://github.com/<username>/<repo_name>/settings/keys আপনি দেখতে পাবেন গিথুব থেকে স্ক্রিনশট

টার্মিনালে:

$ ls -l id*
-rw-------  1 bruno  staff  1675 Mar 29 17:03 id_rsa
-rw-r--r--  1 bruno  staff   416 Mar 29 17:03 id_rsa.pub

$ ssh-keygen -E md5 -lf id_rsa
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e ec2-user@ip-10-2-1-16.ec2.internal (RSA)

$ ssh-keygen -E md5 -lf id_rsa.pub
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e ec2-user@ip-10-2-1-16.ec2.internal (RSA)

আপনি লক্ষ্য করবেন যে আপনি ব্যক্তিগত এবং সর্বজনীন কী উভয়ের জন্য একই ফিঙ্গারপ্রিন্ট পেয়েছেন।

একই কমান্ডটি গিটহাবের একটি ঝরঝরে বৈশিষ্ট্যের সাথে একত্রিত করা যেতে পারে, এটি সত্য যে তারা প্রকাশ্যে ব্যবহারকারীদের এসএসএইচ পাবলিক কীগুলি https://github.com/<username>.keys এ সরবরাহ করে

এটির সুবিধা নিতে আপনি এখানে ব্যবহার করতে পারেন এমন একটি ওয়ানলাইনার।

$ curl -sL https://github.com/RichardBronosky.keys | while read; do echo -e "\nkey #$((++i)):"; ssh-keygen -E md5 -lf - <<<"$REPLY"; echo $REPLY; done

key #1:
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e no comment (RSA)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJGT35gvsFveu+80qgurrLHId0h55E9jliM7Fo0mV9b7eg3EfyagkAcJUSMFkoov3HY4CW0yzOc7WlN57ABwvpRz1ioFDex0n0FkjoSEs5ROeT1OneRK6Bf6XnplgPuQ/LSSkv3kmK6I29R+YWi6TjDvLLoA5BrXJjOMfUv36jxWCDtk/5ZdhMZqhsMuDm06Jg5JBu6n5jQaZkmaIaunz7vOfwVG9LoCI+MYyIdo2S4VTva7Ee7jfAvgSUUgHTjhzsPO0/Ww5a/Kz2ehXW27aJxj/QPLfYR2LmTMbQKm3WpB8P1LjoiU7zjPoVoZ43a4P2JLUDidGKCd3eY5b5xewz

key #2:
2048 MD5:f7:98:f1:0b:73:c6:2a:21:00:7a:70:1d:0f:cf:d8:cc no comment (RSA)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCQsZrjwKjB4WnE4SwVdDX5eEMxKzPHFBVKKpo9vvWUXRQwdTZy6iVOkyF26IPR+xDPzslzXOClKXUrWEh6La/EMpRwuMrWAbMIJFeDHOb56q4azgopoJmMJHo0yxGu0Ts4XszMACYRhlG6uK2AP5SYiOTp1zKPFjazXAdwLXyOvJurzy6KKuGJdSs/sj9+4uehgyRNOhehCSfg71tJJYwRvO2DDfLgaVEKOgZx58gEnJfhhz9D7rbvdZNhw/hCgtVNJaQF9Mdke2OPwWSo8i0/XNb9Bu/GRXqwMZrxDBhyzieocW40cwuzxWfzoi03aISdtQ1HtawH8+/sswviM1+B

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.