سؤال ما هي بصمة مفتاح SSH وكيف يتم توليدها؟


أجد دائما أن أحصل على هذه الرسالة عندما كنت 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" بشكل عام لتسهيل تحديد / التحقق من هوية المضيف الذي تتصل به.

إذا تغيرت البصمة ، فإن الجهاز الذي تتصل به قد غيّر مفتاحه العام. قد لا يكون هذا الأمر سيئًا (يحدث من إعادة تثبيت ssh) ، ولكنه قد يشير أيضًا إلى أنك تتصل بجهاز مختلف في نفس المجال / IP (يحدث عندما تتصل من خلال شيء ما مثل موازن التحميل) أو يتم استهدافهم من خلال هجوم رجل في الوسط ، حيث يقوم المهاجم باعتراض أو إعادة توجيه اتصال ssh الخاص بك للاتصال بمضيف آخر يمكن أن يتطفل على المستخدم / pw.

الحد الأدنى: إذا تلقيت تحذيرًا من تغيير بصمة الإصبع ، فاحرص على التأكد من أنك تتصل فعليًا بالمضيف الصحيح عبر اتصال آمن. على الرغم من أن معظم الوقت غير ضار ، يمكن أن يكون مؤشرا لقضية محتملة

نرى: 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 لم تتصل به من قبل ، يجب عليك طلب المفتاح العام لخادم SSH من مسؤول الخادم. سيعطيك مسؤول الخادم جزءًا من النص. يجب عليك إلحاق هذا النص بالملف ~/.ssh/known_hosts. بهذه الطريقة ، عندما تتصل بالخادم ، سيتعرف عميل SSH على هذا الخادم ، بما أنك قمت بحفظ مفتاحه العام known_hosts. ومن ثم ، يجب عليك فعلاً أبدا قل "نعم" عندما يخبرك عميل SSH "لا يمكن تأسيس أصالة المضيف". يجب عليك دائمًا إضافة المفتاح العمومي للخادم مسبقًا. - Utku
Savara إذا قمت بذلك ، ستعرف أن هناك شيء مريب يحدث عندما يخبرك عميل SSH "لا يمكن تأسيس أصالة العميل" أو عندما يخبرك "تم تغيير المفتاح العمومي للخادم". ومن ثم ، يجب عليك دائما إضافة المفتاح العام للخادم إلى حسابك ~/.ssh/known_hosts ملف مسبقا و أبدا قل نعم عندما يخبرك عميل SSH الخاص بك "لا يمكن تأسيس أصالة العميل" أو عندما يخبرك "تم تغيير المفتاح العمومي للخادم". - Utku
نعم ، أنا على دراية تامة بكيفية عمل آليات عرض بصمات SSH ، ولكن نسبة كبيرة من الوقت ليس لديك خيار الحصول على البصمة من خلال قناة أخرى. TOFU للأسف أفضل ما نحصل عليه في كثير من الأحيان. - Savara
هل هناك طريقة للتحقق من الأصالة حتى بعد الإجابة بنعم؟ - exchange


يمكنك إنشاء بصمة لمفتاح عمومي باستخدام ssh-keygen مثل ذلك:

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

مثال ملموس (إذا كنت تستخدم مفتاحًا عامًا لـ 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)

الجزء الاول (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
KitHo لست متأكدًا إذا كنت أفهم سؤالك. لقد قمت بتحديث المثال ، كما أفكر ssh-keygen -lf سوف تفعل ما تريد. - Benjamin Oakes
عندما يكون SSH-ing في جهاز جديد ، ما يراه المرء ليس بصمة حافظة المستخدم ، ولكن بصمة حافظة المضيف. لذلك أفضل مثال لسياق السؤال هو ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub. فإنه يظهر البصمة التي تظهر أيضا على تسجيل الدخول SSH إلى المضيف المحلي. - tanius
لي ssh-keygen ذكرت sha256 بصمات الأصابع. من أجل الحصول على md5 ركض بصمات ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub. #archlinux - Justin C
(JustinC) تم تغيير إصدارات OpenSSH 6.8 (مارس 2015) وتغييرها إلى SHA256 ، المعروض في الأساس 64 بدلاً من ست عشري ، بشكل افتراضي. لاستخدام العميل ssh -o FingerprintHash=md5 أو ما يعادلها في ssh_config وعلى الأشياء التي تستخدم ssh مثل scp. - dave_thompson_085


البصمة هي MD5 المفتاح العمومي ترميز Base64.

$ 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 هي البصمة المعروضة عندما يتم إنشاء المفتاح ، فقط بدون النهايات الفاصلة.


ومع ذلك ، إذا كنت تتعامل مع بصمات الأصابع التي يعرضها Amazon في وحدة تحكم EC2 Key Pairs ، للأسف قد يكون حيوانًا مختلفًا. إذا كانت سلسلة سداسية عشرية مؤلفة من 32 رقمًا ، فهي بصمة مفتاح MD5 SSH العامة القياسية أعلاه. ولكن إذا كانت الأرقام 40 هيكس ، فإنها في الواقع بصمة تحسب عن طريق أخذ SHA1 من مفتاح سري بتنسيق PKCS # 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 ولم تتطابق مع MD5 تم إنشاء نظامها. هذا ساعد - شكرا لك! sed 's | ^ ssh-rsa || /etc/ssh/ssh_host_rsa_key.pub | sed '| | =. * $ | == |' | base64 -d | MD5SUM - Liczyrzepa
هذا مهم للغاية في فهم سبب عدم تطابق هذه البصمة مع سجلات SSHFP لنظام أسماء النطاقات ، نظرًا لأنها تستخدم خلاصات SHA-1 أو SHA-256. - neirbowj
Liczyrzepa قد يكون حقل publickey أو لا يكون '==' في النهاية اعتمادًا على نوع المفتاح و bitsize؛ أكثر أمانا و IMO أسهل في الاستخدام awk '{print $2}' /path/to/keyfile.pub أو مشابه. - dave_thompson_085
هذه هي الإجابة الوحيدة التي توضح كيفية حساب البصمة - greuze
لكن في Linux Mint يكون الأمر: cat id_rsa.pub | cut -d' ' -f2 | base64 -d | md5sum - greuze


ssh-keygen -r host.name.com

سيتم إخراج بصمات الأصابع لكافة المفاتيح العمومية التي تم تكوينها على مثيل sshd.

هذه يمكن بعد ذلك وضعها DNS SSHFP السجلات.


0
2017-11-26 04:32