अकेले OpenSSH उपकरणों के साथ ऐसा करने का कोई तरीका नहीं हो सकता है।
लेकिन यह OpenSSL टूल्स के साथ काफी आसानी से किया जा सकता है। वास्तव में, इसे करने के कम से कम दो तरीके हैं। नीचे दिए गए उदाहरणों में, ~/.ssh/id_rsa
आपकी निजी कुंजी है।
एक तरीका dgst का उपयोग कर रहा है :
openssl dgst -sign ~/.ssh/id_rsa some-file
अन्य का उपयोग कर रहा है pkeyutl :
openssl pkeyutl -sign -inkey ~/.ssh/id_rsa -in some-file
ये दोनों मानक उत्पादन के लिए एक द्विआधारी हस्ताक्षर लिखते हैं। dgst एक -hex
विकल्प लेता है एक पाठात्मक प्रतिनिधित्व को मुद्रित करेगा, जिसमें हस्ताक्षर के रूप के बारे में कुछ विवरण होंगे। pkeyutl एक -hexdump
विकल्प लेता है जो थोड़ा कम उपयोगी है। दोनों आरएसए और डीएसए चाबियाँ दोनों स्वीकार करेंगे। मुझे नहीं पता कि आउटपुट का प्रारूप क्या है। दोनों कमांड अलग-अलग फॉर्मेट तैयार करते हैं। मैं धारणा है कि मिल pkeyutl की तुलना में अधिक आधुनिक माना जाता है dgst ।
उन हस्ताक्षरों को सत्यापित करने के लिए:
openssl dgst -verify $PUBLIC_KEY_FILE -signature signature-file some-file
तथा:
openssl pkeyutl -verify -inkey $PUBLIC_KEY_FILE -sigfile signature-file -in some-file
समस्या यहाँ है $PUBLIC_KEY_FILE
। ओपनएसएसएल ओपनएसएसएच के सार्वजनिक कुंजी प्रारूप को नहीं पढ़ सकता है, इसलिए आप इसका उपयोग नहीं कर सकते id_rsa.pub
। आपके पास कुछ विकल्प हैं, कोई भी आदर्श नहीं है।
यदि आपके पास 5.6 या बाद के ओपनएसएसएच का एक संस्करण है, तो आप स्पष्ट रूप से ऐसा कर सकते हैं:
ssh-keygen -e -f ~/.ssh/id_rsa.pub -m pem
जो PEM प्रारूप में मानक आउटपुट के लिए सार्वजनिक कुंजी लिखेगा, जिसे OpenSSL पढ़ सकता है।
यदि आपके पास निजी कुंजी है, और यह RSA कुंजी है, तो आप इससे सार्वजनिक कुंजी निकाल सकते हैं (मुझे लगता है कि PEM- एन्कोडेड निजी कुंजी फ़ाइल में सार्वजनिक कुंजी की एक प्रति शामिल है, क्योंकि सार्वजनिक कुंजी को प्राप्त करना संभव नहीं है स्वयं निजी कुंजी से), और उसका उपयोग करें:
openssl rsa -in ~/.ssh/id_rsa -pubout
मुझे नहीं पता कि क्या कोई डीएसए समकक्ष है। ध्यान दें कि इस दृष्टिकोण के लिए निजी कुंजी के स्वामी से कुछ सहयोग की आवश्यकता होती है, जिसे सार्वजनिक कुंजी को निकालना होगा और इसे भेजने वाले को सत्यापित करना होगा।
अंत में, आप सार्वजनिक कुंजी को ओपनएसएसएच से ओपनएसएसएस प्रारूप में बदलने के लिए लार्स नामक एक पायथन कार्यक्रम का उपयोग कर सकते हैं ।