SSH और SCP के लिए .pem फ़ाइल के लिए सही फ़ाइल अनुमति क्या है


69

मैंने अपने एडब्ल्यूएस उबंटू सर्वर में एसएसएच करने की कोशिश की है और निर्देशिका को अपने स्थानीय मशीन में कॉपी कर रहा हूं। इस प्रक्रिया के दौरान मुझे विभिन्न फ़ाइल अनुमति त्रुटियों (नीचे उल्लेखित) का अनुभव होता है।

क्या .pem फाइल के लिए एक विशिष्ट फ़ाइल अनुमति की आवश्यकता है जो मुझे SSH और SCP की अनुमति दे?
या क्या मुझे दो बार फ़ाइल अनुमति बदलने की आवश्यकता है - एक बार एसएसएच के लिए और दूसरी एससीपी के लिए मेरे लॉगिन के बाद?

यहां वे कमांड हैं जिनका मैं उपयोग कर रहा हूं:

SSH:

ssh -i sentiment.pem Todo@54.555.555.555

दूरस्थ से स्थानीय कंप्यूटर पर कॉपी करें:

scp Todo@54.555.555.555:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

मैं एक मैक ओएस एक्स 10.7.5 पर हूं।


परीक्षण त्रुटि विधि:

1.) शुरू में मैंने .pem फ़ाइल डाउनलोड करने के बाद, इसकी अनुमतियाँ, I THINK: 0644 पर सेट कर दी थीं

-rw-r - r - @ 1 टोगा स्टाफ 1692 फरवरी 18 21:27 भावना। pem

मैंने तब टर्मिनल के माध्यम से SSH की कोशिश की और निम्नलिखित प्राप्त किया:

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0644 for 'sentiment.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: sentiment.pem
Permission denied (publickey).

2.) मैंने फ़ाइल अनुमतियों को अपडेट किया: chmod 660 sentiment.pem

अद्यतन के बाद, अनुमतियाँ इसके लिए सेट की गईं:

-rw-rw ---- @ 1 टोगा स्टाफ 1692 फरवरी 18 21:27 भावना। पीपीएम

मैंने तब टर्मिनल के माध्यम से SSH की कोशिश की और निम्नलिखित प्राप्त किया:

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0660 for 'sentiment.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: sentiment.pem
Permission denied (publickey).

3.) मैंने फ़ाइल अनुमतियों को अपडेट किया: chmod 600 sentiment.pem

अद्यतन के बाद, अनुमतियाँ इसके लिए सेट की गईं:

-rw ------- @ 1 तोगा स्टाफ 1692 फरवरी 18 21:27 भावना। पीपीएम

मैंने तब टर्मिनल के माध्यम से SSH की कोशिश की और सफल रहा !!

4.) अब लॉग इन किया, मैं अपने स्थानीय कंप्यूटर के साथ दूरस्थ निर्देशिका की प्रतिलिपि बनाने के लिए एक कमांड चलाता हूं:

scp Todo@54.555.555.555:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

कौन सा रिटर्न:

Permission denied (publickey).

एससीपी कमांड का प्रयास:

1.) कमांड -i को जोड़ा और .pem फ़ाइल को संदर्भित किया:

scp -i सेंटीमेंट.पेम टोडो@54.555.555.555: / होम / ubuntu / सेंटीमेंट फोल्डर / यूजर्स / टोगा / डेस्कटॉप / सेंटीमेंटलोक

2.) कमांड -i जोड़ा गया, .pem फ़ाइल को संदर्भित किया, और उपयोगकर्ता को AWS के लिए बदलकर ec2-user:

scp -i सेंटीमेंट .pem ec2-user@54.555.555.555: / home / ubuntu / sentimentfolder / Users / Toga / Desktop / sentimentlocal

3.) ने कमांड -i जोड़ा, .pem फिल्म को संदर्भित किया, AWS के लिए उपयोगकर्ता को ec2-user में बदल दिया, और .pem फ़ाइल के स्थान के लिए पूरा फ़ाइल पथ जोड़ दिया:

scp -i /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem ec2-user@54.555.555.555: home / ubuntu / sentiment / Users / Toga / Desktop / sentimentlocal


आपको
.pem

आपको @danielkullmann कि समझ में आने वाली कॉल करने के लिए धन्यवाद। मैंने .pem फ़ाइल को संदर्भित करने वाले आदेशों के संयोजन की कोशिश की, लेकिन अभी तक कुछ भी काम नहीं किया है। मैंने प्रश्न को अपडेट किया है जिसका शीर्षक है: "एससीपी कमांड्स अटेम्प्टेड" को कैटलॉग करने के लिए जो मैंने कोशिश की। यदि आपके पास एक वैकल्पिक आदेश है, तो कृपया मुझे बताएं। धन्यवाद।
जॉर्ज जस्टर

जवाबों:


110

SSH का उपयोग करके दूरस्थ रूप से Amazon EC2 से कनेक्ट करने के लिए यहां जाएं या नीचे देखें।

SSH का उपयोग करके दूरस्थ रूप से Amazon EC2 से कैसे जुड़ें:

  1. .Pem फ़ाइल डाउनलोड करें।
  2. अमेज़ॅन डैशबोर्ड में बाईं ओर पट्टी से "इंस्टेंस" चुनें, और फिर उस इंस्टेंस का चयन करें जिसे आप कनेक्ट करना चाहते हैं।
  3. "कार्रवाई" पर क्लिक करें, फिर "कनेक्ट" चुनें
  4. "कनेक्ट विथ अ स्टैंडअलोन एसएसएच क्लाइंट" पर क्लिक करें
  5. एक टर्मिनल विंडो खोलें
  6. एक निर्देशिका बनाएँ:

    # mkdir -p ~/.ssh
    
  7. हमारे द्वारा अभी बनाई गई .ssh निर्देशिका में डाउनलोड .pem फ़ाइल को स्थानांतरित करें:

    # mv ~/Downloads/ec2private.pem ~/.ssh
    
  8. .Pem फ़ाइल की अनुमतियाँ बदलें ताकि केवल रूट उपयोगकर्ता ही इसे पढ़ सके:

    # chmod 400 ~/.ssh/ec2private.pem
    
  9. एक विन्यास फाइल बनाएँ:

    # vim ~/.ssh/config
    

    उस कॉन्फिग फ़ाइल में निम्न टेक्स्ट डालें:

    Host *amazonaws.com
    IdentityFile ~/.ssh/ec2private.pem
    User ec2-user
    

    उस फाइल को सेव करें।

  10. अपने उदाहरण से कनेक्ट करने के लिए अपने सार्वजनिक DNS होस्टनाम के साथ ssh कमांड का उपयोग करें।
    उदाहरण के लिए:

    # ssh ec2-54-23-23-23-34.example.amazonaws.com
    

1
मैं जिज्ञासु: क्यों नीच?
एरिक

1
मैंने इसे वोट नहीं दिया। यह वास्तव में मददगार लगता है, निश्चित नहीं कि यह समस्या का समाधान तब होगा जब मुझे रिमोट से अपने स्थानीय कंप तक पहुंचने की आवश्यकता होगी। मैं इसे आजमाऊंगा और देखूंगा कि क्या होता है। धन्यवाद बाबिन।
जॉर्ज जस्टर

जब एक संपूर्ण निर्देशिका और उसकी सामग्री का उपयोग करते हैं scp -r
bahamat

1
बहुत बढ़िया जवाब। पेम को इधर-उधर करने से बचने के लिए, आप सार्वजनिक कुंजी का उपयोग करने के लिए ssh -i ध्वज का उपयोग कर सकते हैं। उदाहरण: ssh -i पाथ / to / ec2pStreet.pem ec2-54-23-23-23-34.example.amazonaws.com
Mafro34

14

chmod 400 {keyfile}.pem अमेज़न ने क्या निर्देश दिया और यह काम करता है।


यह वह उत्तर है जिसकी मुझे तलाश थी, स्वीकृत उत्तर में सभी निर्देश अच्छे अभ्यास हैं ... लेकिन समस्या के लिए अप्रासंगिक।
09 पर सिरिंक

3

ऐसा लगता है कि आप IP पते का उपयोग करने वाले नहीं हैं, लेकिन SCP कमांड में सिस्टम का पूरा होस्ट नाम। AWS डॉक्स ने http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html पर अनुभाग "लिनक्स के लिए फाइल स्थानांतरण / लिनक्स / यूनिक्स के साथ यूनिक्स" के साथ यूनिक्स पर यह वर्णन किया है ।

और -rनिर्देशिकाओं की प्रतिलिपि बनाने के लिए उपयोग करें।

और ध्यान दें कि डिफ़ॉल्ट उपयोगकर्ता नाम विभिन्न छवियों के लिए अलग है:

अमेज़ॅन लिनक्स के लिए, डिफ़ॉल्ट उपयोगकर्ता नाम है ec2-user। RHEL5 के लिए, उपयोगकर्ता नाम अक्सर होता है, rootलेकिन हो सकता है ec2-user। उबंटू के लिए, उपयोगकर्ता नाम है ubuntu। SUSE लिनक्स के लिए, उपयोगकर्ता नाम है root। अन्यथा, अपने एएमआई प्रदाता के साथ जांचें।

तो, इस कमांड का उपयोग करें:

scp -r -i  /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem ubuntu@ec2-xx-xx-xx-xx.compute-x.amazonaws.com:~/sentiment /Users/Toga/Desktop/sentimentlocal

1
एक अच्छा हेड स्मैक रिमाइंडर मेरे लिए सही उपयोगकर्ता नाम का उपयोग करता है। उपरोक्त त्रुटि प्राप्त करें और मुझे ubuntu के उदाहरणों पर ubuntu उपयोगकर्ता का उपयोग करने के लिए याद रखना आवश्यक है।
md_rasler

2

"अनुमति अस्वीकृत (publickey)" दूरस्थ सर्वर से है, इसलिए आप या तो गलत कुंजी का उपयोग कर रहे हैं, इसे कनेक्ट करने की अनुमति नहीं है या दूरस्थ अधिकृत_की फ़ाइल में कोई टाइपो है।


2
chmod 0400 pemfile.pem

तथा

ssh -i path_to_pem_file -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ec2-machine name

3
कृपया अपने sshआदेश की व्याख्या करें (और यदि संभव हो तो एक संदर्भ भी प्रदान करें)। BTW, chmod 400एक जवाब में नौ महीने पहले प्रदान किया गया था।
स्कॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.