SSH अचानक अमान्य स्वरूप लौटा रहा है


23

इसलिए कुछ समय पहले मैंने AWS पर एक सर्वर स्थापित किया, और उनकी उत्पन्न SSH कुंजी का उपयोग किया। मैंने लास्टपास की कुंजी को सहेज लिया है, और इसे पहले वहां से सफलतापूर्वक पुनर्प्राप्त कर लिया है, और इसे काम कर रहा है। हालाँकि, आज फिर से कोशिश करने के बाद, मैं इसे काम पर नहीं ला सकता।

-rw------- 1 itsgreg users 1674 Jun 6 12:51 key_name

मैंने कोशिश की है ssh -i key_name, ssh-keygen -f key_nameलेकिन कुछ भी काम नहीं करता है, मुझे हमेशा यह त्रुटि संदेश मिलता है:

Load key "key_name": invalid format

क्या इसको ठीक करने का कोई तरीका है?

जवाबों:


13

की सामग्री की जाँच करें key_name, यदि एजेंट कहता है invalid format, तो कुंजी के साथ कुछ गड़बड़ है - जैसे .. क्या आप सुनिश्चित हैं कि सही कुंजी है? यहां तक ​​कि अगर यह आपके लिए आवश्यक निजी कुंजी नहीं है, तो ssh एजेंट वापस नहीं आएगा invalid formatयदि कुंजी काम कर रही है, तो आप बस कनेक्ट नहीं कर पाएंगे। आपने किसी कारणवश अपनी सार्वजनिक कुंजी वहां रख दी होगी। इसे जाँचे!


6
निश्चित रूप से जाँच की गई। के साथ शुरू ----BEGIN RSA PRIVATE KEY-----और समाप्त होता है -----END RSA PRIVATE KEY-----। साथ ही यह काम करता था।
ग्रेगोर मेनिह

2
एक अत्यधिक संभावना नहीं है, लेकिन अभी भी संभव है, फ़ाइल दूषित है। एक नया बनाएँ और लास्टपास से फिर से कंटेंट को आबाद करें।
13dimitar

2
वाह, यह वास्तव में मदद की! नई कुंजी उत्पन्न करने के बाद, मैंने देखा कि नई कुंजी में प्रति पंक्ति 64 अक्षर थे जबकि मेरी पुरानी कुंजी में 76 थे। मैंने अपनी पुरानी कुंजी को केवल 64 वर्ण प्रति पंक्ति में सुधार दिया, फिर यह काम करना शुरू कर दिया! मुझे पहली पंक्ति से एक डैश भी याद आ रहा था।
ग्रेगोर मेनिह

2
"मुझे पहली पंक्ति से एक डैश भी याद आ रहा था।" डिट्टो। इसके लिए @ItsGreg धन्यवाद। टर्मिनलों के बीच चयन और नकल करते समय मुझे पहली बार इतनी बार याद आती है!
स्टार

15

मैंने इस समस्या को ठीक करने के लिए क्या किया है कि मैं PPK फ़ाइल का उपयोग करके परिवर्तित करने के लिए उपयोग करता हूं PuttyGen

पहले लोड करें urkey.PPK, फिर रूपांतरण मेनू पर, ओपेंश फाइल फॉर्मेट में एक्सपोर्ट पर क्लिक करें। यह newkey file बनाएगा।

अभी, ssh -i "newkey" user@127.0.0.1

किया हुआ। आशा करता हूँ की ये काम करेगा।


4

मैं ओपनश को .ssh / config फाइल में निर्दिष्ट करके एक विशेष पहचान फ़ाइल का उपयोग करने के लिए कह रहा था।

मूल कार्य विन्यास था

IdentityFile = <path to public key file> 

इसने बिना किसी बदलाव के काम करना बंद कर दिया। थोड़ी सी सोच पर मैंने "निजी कुंजी फ़ाइल के लिए पथ" के साथ "सार्वजनिक कुंजी फ़ाइल के लिए पथ" को बदल दिया। वह काम किया। तर्क यह है कि सार्वजनिक और निजी दोनों कुंजी फ़ाइलों में RSA एल्गोरिथ्म के अनुसार बड़े पुदुप्राइम संबंधित नंबर होते हैं। यदि आप सार्वजनिक कुंजी फ़ाइल द्वारा निजी कुंजी फ़ाइल को प्रतिस्थापित करते हैं, तो इन क्रिप्टोग्राफ़िक संख्याओं को कुंजी फ़ाइलों के भीतर सहेजे गए आधार 64 ब्लॉक से सही तरीके से नहीं निकाला जाएगा। ऐसा लगता है कि ssh के कुछ संस्करण .pub एक्सटेंशन का पता लगा सकते हैं और इसका उपयोग सही निजी कुंजी फ़ाइल की पहचान करने के लिए कर सकते हैं - और अन्य संस्करण न ही ऐसा करते हैं। यह एक और तरीका है जिससे यह त्रुटि हो सकती है। आशा है कि यह किसी की मदद करता है।


मेरे मामले में, मेरे पास सेटअप configफ़ाइल थी path_to_public_keyऔर सब कुछ काम कर रहा था। हालांकि जब मैक ने एक कठिन पुनरारंभ किया और कुछ दिनों बाद मैंने एक करने की कोशिश की git push, तो मुझे ऊपर बताई गई त्रुटि मिलनी शुरू हो गई। लेकिन जब मैंने अब इसे बदल दिया है तो path_to_private_keyचीजें काम कर रही हैं ... हम्मम। सुनिश्चित नहीं हैं कि क्यों ..
lukik

3

मेरे पास एक ही मुद्दा था, और यह पता चलता है कि मेरे पास किसी कारण के लिए फ़ाइल में विंडोज-शैली (सीआरएलएफ) लाइन विभाजक थे।

इसके अलावा, फ़ाइल को एक एलएफ के साथ समाप्त होना चाहिए।

उन बनी चीजों को फिर से ठीक करना।


यह चौंकाने वाला है कि अंतिम LF इतना आवश्यक है, लेकिन यह वास्तव में आंशिक रूप से मुद्दा था, दूसरे भाग के साथ कि मैंने विंडोज में फ़ाइल बनाई और ऐसा करने से यह CRLF लाइन टूट जाता है। दूसरों के संदर्भ के लिए, dos2unixCRLF (विंडोज-शैली) से LF (लिनक्स-शैली) लाइन ब्रेक में बदलने की आज्ञा है।
हाशिम

1

आपको अपनी .ppk कुंजी को OpenSSH कुंजी में परिवर्तित करना चाहिए

यहाँ आप इसे कैसे करते हैं :

  1. PuttyGen डाउनलोड करें और अपना कीपेयर जनरेट करें (यदि आपके पास कीपेयर तैयार नहीं है)। अपने फ़ोल्डर में निजी कुंजी सहेजें (.ppk)
  2. यदि आपके पास पहले से ही निजी कुंजी है, तो "लोड" बटन दबाकर निजी कुंजी फ़ाइल (.ppk) को लोड करें। अन्यथा, इस चरण को छोड़ दें
  3. मेनू "रूपांतरण" के तहत, निर्यात OpenSSH कुंजी चुनें फिर इसे अपने फ़ोल्डर में सहेजें
  4. अब आप पासवर्ड टाइप किए बिना अपने सर्वर को लॉगिन करने के लिए कुंजी का उपयोग करने के लिए तैयार हैं (मुझे लगता है कि आपने पहले से ही सार्वजनिक कुंजी को /root/.ssh/authorized_keys, chmod 600 /root/.ssh/authorized_keys, और SSH दानव के तहत डाल दिया है)

1

मैं आज ही इसमें भाग गया था जब अपने सीआई पाइपलाइन के लिए कुछ गिट टैगिंग बर्तन लिख रहा था।

यहाँ मेरी दोनों कुंजियों में अंतर था:

$ diff ~/.ssh/gitlab ~/.ssh/git_ssh_key
27c27
< -----END OPENSSH PRIVATE KEY-----
---
> -----END OPENSSH PRIVATE KEY-----
\ No newline at end of file

मैंने अपना कोड ऐसा बदला:

     with open(ssh_key_file, 'w') as skf:
-        skf.write(ssh_key)
+        skf.write(ssh_key + '\n')

और अब मेरी ssh कुंजी काम करती है।

TL; DR - मुझे लगता है कि आपके पास अपनी निजी कुंजी के अंत में एक नई पंक्ति होनी चाहिए।


1

मेरे मामले में, यह पता चला कि मेरे पास शुरुआत / अंत "हेडर" और प्रमुख डेटा के बीच नई कड़ियाँ थीं:

-----BEGIN RSA PRIVATE KEY-----

- Key data here -

-----END RSA PRIVATE KEY-----

अतिरिक्त नई लाइनों को हटाना, इसलिए यह बन गया

-----BEGIN RSA PRIVATE KEY-----
- Key data here -
-----END RSA PRIVATE KEY-----

मेरी समस्या हल कर दी।


0

सार्वजनिक कुंजी के बजाय अपनी निजी कुंजी का उपयोग करें।


मेरे जवाब के रूप में एक ही समाधान - जहां एक स्पष्टीकरण भी जोड़ा गया है
vpathak

0

मेरे पास यह मुद्दा था, क्योंकि मेरे पास ~ / .sh में एक कुंजी थी जो वास्तव में एक अमान्य प्रारूप था और मेरे पास बहुत सारी चाबियाँ थीं, जिसका मतलब था कि एसएसएच उन सभी की कोशिश कर रहा था, भले ही मैंने कमांड में अपनी पहचान फ़ाइल निर्दिष्ट की हो। यह केवल विफल होता है क्योंकि यह केवल 5 कुंजी का प्रयास कर सकता है जो मुझे लगता है, और फिर मुझे उस त्रुटि के साथ छोड़ दिया, जो कि वैध था, बस गलत पहचान फ़ाइल के लिए। समाधान सिर्फ IdentitiesOnly yesमेरी ~ / .ssh / config में उपयोग करना था ।


0

मुझे यह त्रुटि थी क्योंकि कुंजी फ़ाइल की शुरुआत में एक खाली रेखा थी। याद रखना आसान है अगर आप catइसे बाहर कर रहे हैं।


0

यह त्रुटि ssh (कम से कम कुछ संस्करण) भी है यदि आप अपनी निजी कुंजी पर पासफ़्रेज़ रखते हैं, और कनेक्ट करने का प्रयास करते समय पासफ़्रेज़ गलत दर्ज करते हैं।

(विशेष रूप से, यह मेरे साथ हुआ: OpenSSH_7.6p1, LibreSSL 2.6.2, जो मैक OS X 10.13.6 के लिए अंतर्निहित SSH है।)

इसलिए दोहराएं कि आप सही पासफ़्रेज़ का उपयोग कर रहे हैं, और वह कैप लॉक बंद है।


-2

सुनिश्चित करें कि आप अपनी निजी कुंजी का नाम बदलें और समस्या है जो फ़ाइल एक्सटेंशन को हटा दें।

कदम मैंने उठाए

अपनी सार्वजनिक कुंजी बनाएँ:

सुनिश्चित करें कि आप उसी निर्देशिका में हैं जिसके पास आपकी निजी कुंजी है

सार्वजनिक कुंजी कैसे बनाएँ:

ssh-keygen -y -f Private-Key.pem > Public-key.pub

सुनिश्चित करें कि सार्वजनिक कुंजी में एक .pub फ़ाइल एक्सटेंशन है

उसके बाद सुरक्षा कारणों से उचित अनुमति प्रदान करें:

chmod 600 Private-Key.pem
chmod 400 Public-key.pub

सबसे महत्वपूर्ण हिस्सा और कारण आपको "अमान्य प्रारूप" त्रुटि मिली

सुनिश्चित करें कि आप अपनी निजी कुंजी का नाम बदलें और फ़ाइल एक्सटेंशन को हटा दें:

अपनी निजी कुंजी से .pem निकालें।

mv Private-Key.pem Private-Key

या अगर एक विंडोज़ कंप्यूटर पर निजी कुंजी का नाम बदला जाता है, तो एक ही नाम को हटा दें .pem

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.