जवाबों:
मैं एक सार्वजनिक / निजी डीएसए कीपर का परीक्षणssh-keygen -y -e -f <private key> करने के तरीके के बजाय उत्तर के तरीके को पसंद करूंगा ? स्टैक ओवरफ्लो पर।
ssh-keygen -y -e -f <private key>एक निजी कुंजी लेता है और इसी सार्वजनिक कुंजी को प्रिंट करता है जो सीधे आपकी उपलब्ध सार्वजनिक कुंजी की तुलना में हो सकती है। (संकेत: टिप्पणियों या कुंजी-विकल्पों से सावधान रहें।)
(यह कैसे नरक है? मैं केवल सार्वजनिक कुंजी को सीधे या अप्रत्यक्ष रूप से निजी कुंजी में एन्कोडेड कर सकता हूँ उम्मीद है ...)
मुझे स्वयं इसकी आवश्यकता थी और निम्नलिखित बैश वन-लाइनर का उपयोग किया। यदि कुंजियाँ एक साथ हों तो यह कुछ भी आउटपुट नहीं करना चाहिए। -qस्क्रिप्ट में अंतर करने के लिए थोड़ा लागू करें और अलग-अलग केवल रिटर्न कोड को उचित रूप से सेट करें।
PRIVKEY=id_rsa
TESTKEY=id_rsa.pub
diff <( ssh-keygen -y -e -f "$PRIVKEY" ) <( ssh-keygen -y -e -f "$TESTKEY" )
ssh-keygen -y -e -f id_rsaid_rsa की जाँच नहीं होगी , लेकिन id_rsa.pub से केवल मान लौटाएँ। इसलिए यदि आप echo 5 > id_rsaनिजी कुंजी को मिटाना चाहते हैं , तो अंतर करें, अंतर पास हो जाएगा! इसके अलावा, ssh-keygen -yef fooजहां foo एक मान्य कुंजी नहीं है (और जिसके पास foo.pub नहीं है) उपयोगकर्ता इनपुट के लिए प्रतीक्षा को अवरुद्ध करेगा, इसलिए स्क्रिप्ट में इसका उपयोग करने में सावधानी बरतें।
आपके द्वारा परीक्षण किए जा रहे सार्वजनिक कुंजी फ़ाइल को प्राप्त करने के आधार पर, स्वीकृत उत्तर गलत सकारात्मक परिणाम दे सकता है। इसका कारण @drewbenn द्वारा टिप्पणी में वर्णित व्यवहार है। विशेष रूप से, जब -E विकल्प को -f विकल्प पैरामीटर के रूप में निजी कुंजी फ़ाइल के साथ उपयोग किया जाता है, तो यह केवल संबंधित सार्वजनिक कुंजी फ़ाइल में तोता (लेकिन सुधार) है।
दूसरे शब्दों में,
ssh-keygen -y -f id_rsa
(जाहिरा तौर पर) सार्वजनिक कुंजी मूल्य उत्पन्न करता है, और
ssh-keygen -y -e -f id_rsa
बस और आउटपुट (और सुधार) मौजूदा id_rsa.pub में कुंजी जो कुछ भी है ।
मेरे मामले में, मुझे यह सत्यापित करना होगा कि जोड़ी दूषित नहीं हुई है। इसलिए, मैंने निम्नलिखित की तुलना करने का निर्णय लिया:
ssh-keygen -y -f id_rsa | cut -d' ' -f 2
साथ में
cut -d' ' -f 2 id_rsa.pub
इसलिए:
diff <(cut -d' ' -f 2 id_rsa.pub) <(ssh-keygen -y -f id_rsa | cut -d' ' -f 2)
शायद यह उतना लचीला नहीं है, लेकिन यह मेरी जरूरतों के लिए बेहतर है। शायद यह किसी और की मदद करे।
यदि वे आपके स्थानीय सिस्टम पर हैं, तो id_rsa.pubअपने $HOME/.ssh/authorized_keysऔर कुंजी का उपयोग sshकरने के लिए छड़ी करें । अगर यह काम करता है, तो वे मेल खाते हैं।localhostid_rsa
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost
ssh -vबहुत मदद भी करता है।