سؤال

هل هناك طريقة سهلة للتحقق من تطابق مفتاح خاص معين مع مفتاح عام معين؟لدي عدد قليل من ملفات *.pub وعدد قليل من ملفات *.key، وأحتاج إلى التحقق من أي منها يتوافق مع أي منها.

مرة أخرى، هذه ملفات pub/key، DSA.

أنا أفضّل حقًا سطرًا واحدًا من نوع ما ...

هل كانت مفيدة؟

المحلول

لقد وجدت طريقة تبدو أفضل بالنسبة لي:

ssh-keygen -y -f <private key file>

سيقوم هذا الأمر بإخراج المفتاح العام للمفتاح الخاص المحدد، لذا قم فقط بمقارنة الإخراج بكل ملف *.pub.

نصائح أخرى

أقوم دائمًا بمقارنة تجزئة MD5 للمعامل باستخدام هذه الأوامر:

Certificate: openssl x509 -noout -modulus -in server.crt | openssl md5
Private Key: openssl rsa -noout -modulus -in server.key | openssl md5
CSR: openssl req -noout -modulus -in server.csr | openssl md5

إذا تطابقت التجزئات، فسيتم دمج هذين الملفين معًا.

بالنسبة لمفاتيح DSA، استخدم

 openssl dsa -pubin -in dsa.pub -modulus -noout

لطباعة المفاتيح العامة، ثم

 openssl dsa -in dsa.key -modulus -noout

لعرض المفاتيح العامة المقابلة للمفتاح الخاص، ثم مقارنتها.

بافتراض أن لديك المفاتيح العامة داخل شهادات x.509، وبافتراض أنها مفاتيح RSA، لكل مفتاح عام، قم بذلك

    openssl x509 -in certfile -modulus -noout

لكل مفتاح خاص، افعل

    openssl rsa -in keyfile -modulus -noout

ثم قم بمطابقة المفاتيح حسب المعامل.

يمكن جعل التحقق أسهل مع الفرق:

diff <(ssh-keygen -y -f <private_key_file>) <public key file>

الشيء الغريب الوحيد هو أن الفرق لا يقول شيئًا إذا كانت الملفات متماثلة، لذلك لن يتم إخبارك إلا إذا كان العام والخاص لا مباراة.

احذف المفاتيح العامة وأنشئ مفاتيح جديدة من المفاتيح الخاصة.احتفظ بها في أدلة منفصلة، ​​أو استخدم اصطلاح التسمية لإبقائها مستقيمة.

إذا كنت تستخدم نظام التشغيل Windows وتريد استخدام واجهة المستخدم الرسومية، فيمكنك استخدام المعجون يمكنك استيراد مفتاحك الخاص إليه:

enter image description here

بمجرد الاستيراد، يمكنك حفظ مفتاحه العام ومقارنته بمفتاحك.

أدخل الأمر التالي للتحقق مما إذا كان المفتاح الخاص والمفتاح العام عبارة عن مجموعة متطابقة (متطابقة) أو ليست مجموعة متطابقة (مختلفة) في دليل $USER/.ssh.يمنع أمر القطع مقارنة التعليق الموجود في نهاية السطر في المفتاح العام، مما يسمح بمقارنة المفتاح فقط.

ssh-keygen -y -f ~/.ssh/id_rsa | diff -s - <(cut -d ' ' -f 1,2 ~/.ssh/id_rsa.pub)

سيبدو الإخراج مثل أحد هذه الخطوط.

Files - and /dev/fd/63 are identical

Files - and /dev/fd/63 differ

لقد كتبت برنامجًا نصيًا لـ Shell يستخدمه المستخدمون للتحقق من إذن الملف لملفات ~/.ssh/files الخاصة بهم ومجموعة المفاتيح المطابقة.إنه يحل التحديات التي أواجهها مع حوادث المستخدم أثناء إعداد ssh.قد يساعدك. https://github.com/BradleyA/docker-security-infrastructure/tree/master/ssh

ملحوظة:إجابتي السابقة (في مارس 2018) لم تعد تعمل مع أحدث إصدارات opensh.الإجابة السابقة:فرق -qs <(ssh-keygen -yf ~/.ssh/id_rsa) <(cut -d ' ' -f 1,2 ~/.ssh/id_rsa.pub)

قم بتشفير شيء ما باستخدام المفتاح العام، واعرف أي مفتاح خاص يقوم بفك تشفيره.

هذا مقالة مشروع الكود بواسطة Jeff Atwood الذي قام بتطبيق غلاف مبسط حول فئات التشفير .NET.بافتراض أن هذه المفاتيح تم إنشاؤها للاستخدام مع RSA، استخدم الفئة غير المتماثلة مع مفتاحك العام للتشفير، ونفس الشيء مع مفتاحك الخاص لفك التشفير.

إذا لم يُرجع شيئًا، فإنهما يتطابقان:

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost

مجرد استخدام المعجون وقم بتحميل مفتاحك الخاص فيه.يقدم خيارات مختلفة، على سبيل المثال.تصدير المفتاح العمومي المتوافق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top