ssh-keygen RSA निजी कुंजी नहीं बनाता है


70

मैं एक निजी कुंजी बनाने और एक समस्या होने की कोशिश कर रहा हूं।

जब मैं उपयोग करता हूं ssh-keygen -t rsa -b 4096 -C "your_email@example.com", तो मुझे निम्नलिखित प्रारूप में एक निजी कुंजी मिलती है।

-----BEGIN OPENSSH PRIVATE KEY-----
uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END OPENSSH PRIVATE KEY-----

और यह एक आवेदन के लिए स्वीकार नहीं किया जा रहा है जिसे मैं उपयोग करने की कोशिश कर रहा हूं।

मैं निम्नलिखित आरएसए प्रारूप में एक कुंजी की उम्मीद कर रहा हूं।

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,25737CC2C70BFABADB1B4598BD8AB9E9

uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END RSA PRIVATE KEY-----

मैं सही प्रारूप कैसे बनाऊं? यह अजीब है क्योंकि मेरे पास मौजूद हर दूसरा मैक सही प्रारूप बनाता है, सिवाय इसके कि मुझे कोई समस्या है।

मैं एक नए स्थापित मैक ओएस Mojave पर हूँ


और अन्य मैक Mojave पर नहीं हैं? मैं मोजावे पर भी हूं और "नया" ओपनश कुंजी प्रारूप प्राप्त करता हूं। इसलिए मुझे लगता है कि अन्य मैक कम संस्करणों पर हैं। उपयोग किए गए ओपनएसएसएल संस्करण की जांच करें।
जीना

@Zina अन्य Macs भी Mojave पर हैं और समान OpenSSL संस्करण है।
चन्द्रमा

RSA डिफ़ॉल्ट प्रकार होना चाहिए। क्या होगा यदि आप -t rsaविकल्प को पूरी तरह से छोड़ देते हैं?
गुज़ियाजसन

@guzzijason यह एक ही है। वही मुझे पागल कर रहा है। यहां तक ​​कि अगर मैं अपने मैक (एक काम कर रहा) पर -t rsa को छोड़ देता हूं, तो यह आरएसए को सही ढंग से उत्पन्न करता है।
चन्द्रमा

मुझे भी यही समस्या हुई है। वर्कअराउंड के रूप में मैंने कुंजी जनरेट करने के लिए ओपनश के पुराने संस्करण का उपयोग किया है। यदि आपकी जेनरेट की गई कुंजी ओपनस्ल rsa -text -in key_file -passin 'पास: पासफ़्रेज़' के साथ सही है, तो आप परीक्षण कर सकते हैं। वर्जन 7.4p1-16 काम करता है।
atype

जवाबों:


73

मुझे हाल ही में एक ही समस्या का सामना करना पड़ा (10.14.1 mojave में अपग्रेड के बाद), इस मुद्दे के लिए 2 संभावित समाधान यहां दिए गए हैं।

  • अपने ssh-keygen बाइनरी को डाउनग्रेड करें (आप आसानी से किसी भी लिनक्स / डॉक इमेज से पुराना संस्करण प्राप्त कर सकते हैं)

या

  • -m PEMअपने ssh-keygen कमांड में विकल्प जोड़ें । उदाहरण के लिए, आप ssh-keygen -m PEM -t rsa -b 4096 -C "your_email@example.com"ssh-keygen को PEMप्रारूप के रूप में निर्यात करने के लिए बाध्य कर सकते हैं ।

ऐसा लगता है कि mojave में वर्तमान ssh-keygen संस्करण में, डिफ़ॉल्ट निर्यात प्रारूप यहांRFC4716 वर्णित है


1
डिफ़ॉल्ट निर्यात publickey प्रारूप वास्तव में rfc4716 है, लेकिन क्यू में प्रारूप एक आंतरिक प्राइवेटकी प्रारूप है और OpenSSH का 'नया' प्रारूप है, जो 1999 (!) में मौजूद नहीं था, और वर्तमान में वर्णित नहीं है। 6.0 से 6.3 का प्रयास करें।
dave_thompson_085

3
मैं उत्तर को संपादित करने में सक्षम नहीं हूं, लेकिन कृपया स्पष्ट हो कि 1. और 2. स्वतंत्र समाधान हैं, अनुक्रमिक कदम नहीं। आपको एक-बंद कुंजी पीढ़ी के लिए डाउनग्रेड करने की आवश्यकता नहीं है। बस-m PEM
sdoxsee

47

OpenSSH निजी कुंजी प्रारूप के साथ नई कुंजियों को पुराने PEM प्रारूप में ssh-keygen उपयोगिता का उपयोग करके परिवर्तित किया जा सकता है।

ssh-keygen -p -m PEM -f ~/.ssh/id_rsa

केवल इस परिणाम को प्राप्त करने के लिए पुराने ओपनएसएसएच को डाउनग्रेड करने की आवश्यकता नहीं है।


हाँ। जैसा कि मैंने पहले ही स्वीकार किए गए उत्तर पर टिप्पणियों में उल्लेख किया है। serverfault.com/questions/939909/…
sdoxsee

8
स्वीकृत उत्तर में जो स्पष्ट नहीं है वह यह है कि आपको एक नई कुंजी जोड़ी बनाने की आवश्यकता नहीं है। आप अपनी मौजूदा कुंजी ले सकते हैं और उन्हें उस कमांड से बदल सकते हैं। यह फ़ाइल को अधिलेखित कर देता है, इसलिए मुझे लगता है कि पहले से ही मामले में बैकअप बनाने के लिए यह एक अच्छा विचार है।
मार्टिनेटामा

मौजूदा निजी कुंजी को RSA प्रारूप में कैसे परिवर्तित किया जाए, इस पर निर्देश जोड़ने के लिए धन्यवाद। बस मेरे बेकन को बचा लिया!
क्रेग ब्लाज़्ज़की
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.