[amazon-web-services] एक अमेज़ॅन Ec2 उदाहरण में एसएसएच की कोशिश कर रहा है - अनुमति त्रुटि


Answers

आप लॉग इन करने के लिए गलत उपयोगकर्ता नाम का उपयोग कर रहे हैं:

  • अधिकांश उबंटू छवियों में उपयोगकर्ता उबंटू होता है
  • अमेज़ॅन का एएमआई ec2-user
  • अधिकांश डेबियन छवियों में या तो root या admin

लॉगिन करने के लिए, आपको अपने ssh कमांड को समायोजित करने की आवश्यकता है:

ssh -l USERNAME_HERE -i .ssh/yourkey.pem public-ec2-host

HTH

Question

यह शायद कुछ लोगों के लिए एक बेवकूफ सरल सवाल है :)

मैंने अमेज़ॅन ईसी 2 पर एक नया लिनक्स उदाहरण बनाया है, और उस हिस्से के रूप में .pem फ़ाइल को डाउनलोड करने के लिए मुझे एसएसएच में अनुमति देने के लिए।

जब मैंने एसएसएच के साथ प्रयास करने की कोशिश की:

ssh -i myfile.pem <public dns>

मुझे मिला:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'amazonec2.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: amazonec2.pem
Permission denied (publickey).

इस पोस्ट के बाद मैंने पेम फ़ाइल को +600 chmod करने की कोशिश की, लेकिन अब जब मैं ssh मुझे बस मिलता है:

Permission denied (publickey).

मैं यहां क्या स्कूल-लड़का त्रुटि कर रहा हूं? .pem फ़ाइल मेरे घर फ़ोल्डर (ओएसएक्स में) में है। इसकी अनुमति इस तरह दिखती है:

-rw-------@   1 mattroberts  staff    1696 19 Nov 11:20 amazonec2.pem



मुझे पता है कि इस प्रश्न का उत्तर पहले ही दिया गया है, लेकिन उन लोगों के लिए जिन्होंने उन सभी की कोशिश की है और आप अभी भी परेशान हो रहे हैं "अनुमति अस्वीकार (प्रकाशन)"। SUDO के साथ अपना आदेश चलाने का प्रयास करें। बेशक यह एक अस्थायी समाधान है और आपको अनुमतियों को सही ढंग से सेट करना चाहिए लेकिन कम से कम यह आपको यह पहचानने देगा कि आपका वर्तमान उपयोगकर्ता आपके विशेषाधिकारों के साथ नहीं चल रहा है (जैसा कि आपने माना है)

sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com

एक बार ऐसा करने के बाद आपको इस तरह का एक संदेश मिलेगा:

Please login as the user "ec2-user" rather than the user "root"

जिसे भी कम से कम दस्तावेज किया जाता है। उस मामले में बस यह करें:

sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com -l ec2-user

और आपको शानदार मिलेगा:

   __|  __|_  )
   _|  (     /   Amazon Linux AMI
  ___|\___|___|



.pem फ़ाइल का उपयोग कर सर्वर से कनेक्ट करने के लिए लिनक्स उपयोगकर्ता के लिए सरल कदम निम्नलिखित हैं:

चरण 1: पेम फ़ाइल के स्थान पर और इसे घर .ssh स्थान पर कॉपी करें।

cp example.pem ~/.ssh/example.pem

चरण 2: अनुमति बदलें

chmod 400 ~/.ssh/example.pem

चरण 3: निम्न आदेश चलाएं

ssh -i ~/.ssh/example.pem ec2-user@host.com

चूंकि यह आदेश बहुत लंबा है इसलिए आप निम्न आदेशों का उपयोग करके इसके उपनाम बनाएंगे:

 vim ~/.bashrc

आखिरी बार एक ही कमांड को निम्न तरीके से लिखें।

alias sshConnect='ssh -i ~/.ssh/example.pem ec2-user@host.com'

अब अपने सिस्टम को पुनरारंभ करें और अपने सर्वर से कनेक्ट करने के लिए sshConnect का उपयोग करें।




अन्य उत्तरों के अलावा, यह काम करने के लिए मैंने यहां किया है:

  • कुंजी को .ssh फ़ोल्डर में कॉपी करें यदि आपने अभी भी नहीं किया था:

cp key.pem ~/.ssh/key.pem

  • कुंजी को उचित अनुमति दें

chmod 400 ~/.ssh/key.pem

  • एसएसएच एजेंट शुरू करें ( https://.com/a/17848593 धन्यवाद)

eval `ssh-agent -s` ssh-add

  • फिर, कुंजी जोड़ें

ssh-add ~/.ssh/key.pem

अब आप एसएससी ईसी 2 (:




ठीक है, एकमात्र चीज जो मेरे लिए काम करती थी वह थी:

  1. कुंजी की अनुमति बदलें

    chmod 400 mykey.pem

  2. Ec2 -user , और सही ec2-99 ... पता का उपयोग करके लॉग इन करना सुनिश्चित करें। जब आप लॉग इन होते हैं और अपना उदाहरण सूचीबद्ध करते हैं तो ec2-99 पता aws कंसोल के नीचे होता है

    ssh -i mykey.pem ec2-user@ec2-99-99-99-99.compute-1.amazonaws.com




ssh -i /.pem उपयोगकर्ता @ होस्ट-मशीन-आईपी

मुझे लगता है कि ऐसा इसलिए है क्योंकि आपने गलत क्रेडेंशियल्स दर्ज किए हैं या आप निजी कुंजी के बजाय सार्वजनिक कुंजी का उपयोग कर रहे हैं या, आपके पोर्ट अनुमतियां सभी के लिए एसएसएच के लिए खुली हैं। यह अमेज़ॅन के लिए बुरा है।




इस त्रुटि के पीछे तीन कारण हो सकते हैं।

  1. आप गलत कुंजी का उपयोग कर रहे हैं।
  2. आपकी कुंजी में सही अनुमति नहीं है। आपको इसे 400 तक चिपकाना होगा।
  3. आप गलत उपयोगकर्ता का उपयोग कर रहे हैं। उबंटू छवियों में उपयोगकर्ता उबंटू है, अमेज़ॅन का एएमआई ec2-user है और डेबियन छवियों में रूट या व्यवस्थापक है



यह त्रुटि केवल अनुमति के कारण है।

बस अनुमति 600 दें

#chmod 600 पेम्फाइलपाथ




मेरे लिए मुद्दा यह था कि मेरी .pem फ़ाइल मेरे एनटीएफएस विभाजन में से एक में थी। मैंने इसे अपने लिनक्स विभाजन (ext4) में ले जाया।

चलकर आवश्यक अनुमतियां दी गईं:

chmod 400 my_file.pem

और यह काम किया।







चेकलिस्ट:

  1. क्या आप सही निजी कुंजी .pem फ़ाइल का उपयोग कर रहे हैं?

  2. क्या इसकी अनुमतियां सही ढंग से सेट हैं? (मेरा अमेज़ॅन-ब्रांड एएमआई 644 के साथ काम करता है, लेकिन रेड टोपी कम से कम 600 या 400 होनी चाहिए। उबंटू के बारे में नहीं पता।)

  3. क्या आप अपनी एसएसएच लाइन में सही उपयोगकर्ता नाम का उपयोग कर रहे हैं? अमेज़ॅन ब्रांडेड = "ec2-user", Red Hat = "root", उबंटू = "उबंटू"। उपयोगकर्ता को "ssh -i pem usename @ hostname" या "ssh -l उपयोगकर्ता नाम -i पेम होस्टनाम" के रूप में निर्दिष्ट किया जा सकता है "




Related