सवाल एक आरएसए सार्वजनिक / निजी कुंजी जोड़ी मैच कैसे जांचें


मेरे पास दो फाइलें हैं, id_rsa तथा id_rsa.pub। अगर वे हैं तो मान्य करने के लिए किस आदेश का उपयोग किया जा सकता है वैध जोड़ी?


42
2017-09-11 16:24


मूल


मैं Michuelnik के जवाब की पुष्टि करेंगे; यह मुझे एक नई कुंजी जोड़ी बनाने के लिए बचाया, धन्यवाद। ssh -v बहुत मदद करता है। - Chris K


जवाब:


मैं पसंद करूंगा ssh-keygen -y -e -f <private key> स्वीकार्य उत्तर के बजाय रास्ता आप सार्वजनिक / निजी डीएसए कीपैयर का परीक्षण कैसे करते हैं? स्टैक ओवरफ़्लो पर।

ssh-keygen -y -e -f <private key> एक निजी कुंजी लेता है और संबंधित सार्वजनिक कुंजी प्रिंट करता है जिसे सीधे आपकी उपलब्ध सार्वजनिक कुंजी से तुलना की जा सकती है। (संकेत: टिप्पणियों या कुंजी विकल्पों से सावधान रहें।)

(यह कैसे कर रहा है? मैं केवल उम्मीद कर सकता हूं कि सार्वजनिक कुंजी निजी कुंजी में सीधे या परोक्ष रूप से एन्कोड किया गया है ...)

मुझे इसे स्वयं चाहिए और निम्नलिखित बैश एक-लाइनर का इस्तेमाल किया। चाबियाँ एक साथ होने पर इसे कुछ भी आउटपुट नहीं करना चाहिए। थोड़ा आवेदन करें -q स्क्रिप्ट और diff में diff के लिए केवल वापसी कोड उचित रूप से सेट करता है।

PRIVKEY=id_rsa
TESTKEY=id_rsa.pub
diff <( ssh-keygen -y -e -f "$PRIVKEY" ) <( ssh-keygen -y -e -f "$TESTKEY" )

69
2017-09-11 17:58



@MichaelHampton: अभी व मैं आपकी टिप्पणी समझता हूं। "स्वीकृत उत्तर" को स्टैक ओवरफ्लो पर प्रश्न का संदर्भ देना चाहिए इस सवाल... - Michuelnik
@ सर्च: मैंने सोचा कि कौन सा कुंजी निजी है और कौन सा सार्वजनिक है वह शुद्ध यादृच्छिक है क्योंकि दोनों कुंजी बराबर हैं। क्या एक महत्वपूर्ण एन्क्रिप्ट केवल दूसरे के साथ डिक्रिप्ट किया जा सकता है। और यदि एक कुंजी दूसरे से प्राप्त की जा सकती है तो यह सब काम नहीं करेगा। - Michuelnik
@Michuelnik आप निजी कुंजी से सार्वजनिक कुंजी प्राप्त कर सकते हैं। आप सार्वजनिक कुंजी से निजी कुंजी प्राप्त नहीं कर सकते हैं। उस सामग्री के बारे में बात नहीं कर रहे थे जो इसे एन्क्रिप्ट करता है। - Sirch
@Michuelnik imho, सवाल SO और विषय पर यहां विषय है (और / या सुपरसुर)। imho, इसे डुप्लिकेट के रूप में चिह्नित नहीं किया जाना चाहिए और इसके बजाय माइग्रेशन के लिए फ़्लैग किया जाना चाहिए। लेकिन यह दोनों पर कवर किया गया है इसलिए मुझे जानकारी की अधिक पूर्ण साझा करना पसंद है। - Chris K
जब तक id_rsa.pub मौजूद है, ssh-keygen -y -e -f id_rsa id_rsa बिल्कुल भी जांच नहीं पाएगा, लेकिन id_rsa.pub से मूल्य वापस कर देगा। तो उदा। अगर तुम echo 5 > id_rsaनिजी कुंजी को मिटाने के लिए, फिर diff करें, diff पास होगा! इसके अलावा, चल रहा है ssh-keygen -yef foo जहां foo मान्य कुंजी नहीं है (और कोई संबंधित foo.pub नहीं है) उपयोगकर्ता इनपुट के लिए प्रतीक्षा अवरुद्ध कर देगा, इसलिए स्क्रिप्ट में इसका उपयोग करके सावधान रहें। - drewbenn


आप जिस सार्वजनिक कुंजी फ़ाइल को प्राप्त कर रहे हैं, उसके आधार पर, स्वीकार्य उत्तर झूठी सकारात्मक परिणाम दे सकता है। यह @drewbenn द्वारा टिप्पणी में वर्णित व्यवहार की वजह से है। विशेष रूप से, जब -ई विकल्प का उपयोग निजी कुंजी फ़ाइल के साथ -f विकल्प पैरामीटर के रूप में किया जाता है, तो यह केवल संबंधित सार्वजनिक कुंजी फ़ाइल में जो तोता है (लेकिन सुधार करता है)।

दूसरे शब्दों में,

ssh-keygen -y -f id_rsa

(जाहिरा तौर पर) उत्पन्न करता है सार्वजनिक कुंजी मूल्य, और

ssh-keygen -y -e -f id_rsa

बस में और आउटपुट (और reformats) कुंजी में कुंजी मौजूदा 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)

शायद यह लचीला नहीं है, लेकिन यह मेरी जरूरतों के लिए बेहतर है। शायद यह किसी और की मदद करता है।


13
2018-04-02 00:04



यह वास्तव में स्वीकृत उत्तर को प्रतिस्थापित करना चाहिए या कम से कम इसे अपवॉट के संदर्भ में पार करना चाहिए। - thomanski


अगर वे आपके स्थानीय सिस्टम पर हैं, तो छड़ी id_rsa.pub आपके में $HOME/.ssh/authorized_keys तथा ssh सेवा मेरे localhost का उपयोग करते हुए id_rsa कुंजी। अगर यह काम करता है, तो वे मेल खाते हैं।

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

1
2017-09-11 16:26





उपयोग:

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

-2
2018-03-04 18:54



कृपया इसे उचित उत्तर देने के लिए समय दें और यह बताएं कि यह प्रश्न कैसे हल करता है, कृपया फ़ॉर्मेटिंग टूल का भी उपयोग करें। - Sven♦
स्टैक ओवरफ़्लो पर क्रॉस पोस्ट किया गया: एक आरएसए सार्वजनिक / निजी कुंजी जोड़ी मैच कैसे जांचें - Peter Mortensen