Windows पासवर्ड सही निजी कुंजी के साथ भी AWS EC2 पर डिक्रिप्ट नहीं करेगा


21

मैंने AWS EC2 पर एक नया विंडोज इंस्टेंस बनाया, मैंने अपनी स्थानीय मशीन से अपनी सार्वजनिक कुंजी अपलोड करके बनाई गई एक कीपर का उपयोग किया।

उदाहरण ठीक लॉन्च हुआ, लेकिन यह पासवर्ड को डिक्रिप्ट नहीं करेगा। यह रिपोर्ट करता है:

निजी कुंजी "----- BEGIN RSA निजी कुंजी -----" से शुरू होनी चाहिए और "----- END RSA निजी कुंजी -----" के साथ समाप्त होगी।

मुझे यकीन है कि मैंने सही कुंजी अपलोड की है। मैंने सत्यापित किया है कि उंगलियों के निशान अजीब फिंगरप्रिंट प्रारूप AWS उपयोग के साथ मेल खाते हैं । लेकिन यह सिर्फ डिक्रिप्ट नहीं होगा।

मैंने कुंजी फ़ाइल अपलोड करने की कोशिश की है, और इसे फ़ॉर्म में चिपका दिया है।

मैंने अंततः पता लगा लिया कि यह अनुगामी न्यूलाइन को अलग नहीं कर रहा है, और कुंजी में रिक्त लाइन को हटा दिया है। जब मैं "डिक्रिप्ट पासवर्ड" पर क्लिक करता हूं, तो बस मुझे एक नई त्रुटि मिलती है:

आपका पासवर्ड डिक्रिप्ट करने में एक त्रुटि हुई थी।  कृपया सुनिश्चित करें कि आपने अपनी निजी कुंजी सही दर्ज की है।

जवाबों:


22

AWS EC2 के प्रमुख प्रबंधन SSH निजी कुंजी के साथ सामना नहीं करते हैं जिनके पास पासवर्ड सेट हैं (एन्क्रिप्टेड हैं)। यह इसका पता नहीं लगाता है, और बस एक बिना किसी त्रुटि के विफल हो जाता है।

यदि आपकी निजी कुंजी को डिस्क पर एन्क्रिप्ट किया गया है (जैसे कि यह होना चाहिए, IMO) तो आपको इसे AWS के कंसोल में पेस्ट करने के लिए डिक्रिप्ट करना होगा।

ऐसा करने के बजाय, स्थानीय रूप से पासवर्ड को डिक्रिप्ट करने पर विचार करें, इसलिए आपको अपनी निजी कुंजी AWS को भेजने की आवश्यकता नहीं है। स्टार्टअप के बाद सर्वर लॉग से एन्क्रिप्टेड पासवर्ड डेटा (बेस 64 एनकोडेड) प्राप्त करें, या गेट -पासवर्ड-डेटा या संबंधित एपीआई अनुरोधों का उपयोग करें।

तब आप आधार को डीकोड कर सकते हैं और परिणाम को डिक्रिप्ट कर सकते हैं:

base64 -d /tmp/file | openssl rsautl -decrypt -inkey /path/to/aws/private/key.pem

(ओपनएसएसएच निजी कुंजी द्वारा स्वीकार किए जाते हैं openssl rsautl)।

एक उपयोगी त्रुटि के साथ पासवर्ड संरक्षित कुंजी को संभालने में विफल होने के साथ समस्या भी कमांड को प्रभावित करती हैec2-get-password

यह सभी देखें:


1
धन्यवाद। यहां एक पूरी कमांड लाइन है जो मैं आपके सुझावों का पालन करता हूं: aws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key} ( aws-cli और jq का उपयोग करता है )।
बेन बटलर-कोल

base64 मेरे लिए -dइतने -Dकामों की शिकायत करता है। im पर OS X
साद मसूद

2
OS X में, मैं उस पाइप में एक और कमांड जोड़ूंगा: aws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key} | pbcopy ... जो आपके क्लिपबोर्ड पर सीधे पासवर्ड भेजता है।
मार्क मैग्लाना

1
इसे सही उत्तर IMHO के रूप में चिह्नित किया जाना चाहिए। चूँकि इस उत्तर की तुलना में अन्य उत्तर थोड़ा असुरक्षित हैं
वेबफोर्मर्स

4

Jq के उपयोग के बिना, यह अभी भी संभव है, लेकिन लौटे डेटा के कुछ अतिरिक्त पार्सिंग की आवश्यकता है।

aws ec2 get-password-data "--instance-id=${instance_id}" --query 'PasswordData' | sed 's/\"\\r\\n//' | sed 's/\\r\\n\"//' | base64 -D | openssl rsautl -inkey ${my_key} -decrypt

डब्ल्यूएसएल उबंटू पर महान काम किया, मुझे इसके base64 -dबजाय उपयोग करना था -D
सेठ स्टोन

3

यह मेरे लिए macOS में काम आया:

openssl rsa -in $HOME/.ssh/aws-remote -out /Users/home/desktop/unencrypted-rsa.txt

यह ध्यान देने योग्य है कि आप बता सकते हैं कि क्या आपकी .pem फ़ाइल निम्न पंक्ति की तलाश में पासवर्ड के साथ एन्क्रिप्ट की गई है। यदि यह मौजूद है, तो आपको अमेज़ॅन के साथ उपयोग करने से पहले इसे डिक्रिप्ट करना होगा:

Proc-Type: 4,ENCRYPTED

मेरे लिए यह समाधान था। एडब्ल्यूएस यूआई यह पता नहीं लगाता है कि कुंजी पासफ़्रेज़ संरक्षित थी और फिर आपको इसे पहले डिक्रिप्ट करने की आवश्यकता है। यह हालांकि असुरक्षित है। तो बाद में डिक्रिप्टेड फ़ाइल को हटा दें।
वेबफोर्मर्स

2

मेरे मैक पर, बेस 64 के लिए कमांड-लाइन तर्क अलग हैं।

यह मेरे लिए काम किया:

base64 -D -i /tmp/file | openssl rsautl -decrypt -inkey /path/to/key.pem

-1
  1. ec2 डैशबोर्ड पर जाएं
  2. मौजूदा कुंजी को हटाएं
  3. एक नई कुंजी जोड़ी बनाएं
  4. एक नाम चुनो
  5. डाउनलोड करें और इसे स्थानीय में रखें
  6. लॉन्च उदाहरण और विंडोज़ उदाहरण की अपनी प्रतिलिपि डाउनलोड करें
  7. चरण 4 में उपयोग किए गए नाम के साथ नई कीपर का नाम दें
  8. पासवर्ड को डिक्रिप्ट करने के लिए इस नई उत्पन्न कुंजी का उपयोग करें

यह काम करेगा


1
हाँ, यह काम करेगा। लेकिन यह भी इस तरह की याद आती है - मैं उस मामले की व्याख्या कर रहा हूं जहां आप एक स्थानीय कुंजी अपलोड करते हैं।
क्रेग रिंगर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.