สิทธิ์ในการใช้ไฟล์ที่ถูกต้องสำหรับไฟล์. pem สำหรับ SSH และ SCP คืออะไร


69

ฉันได้ลองใช้ SSH ไปยังเซิร์ฟเวอร์ AWS Ubuntu แล้วคัดลอกไดเรกทอรีไปยังเครื่องของฉัน ตลอดกระบวนการฉันพบข้อผิดพลาดการอนุญาตไฟล์ต่าง ๆ (ระบุไว้ด้านล่าง)

จำเป็นต้องมีการอนุญาตเฉพาะไฟล์สำหรับไฟล์. pem ที่อนุญาตให้ฉันใช้ SSH และ SCP หรือไม่
หรือฉันจำเป็นต้องเปลี่ยนการอนุญาตของไฟล์สองครั้ง - หนึ่งครั้งสำหรับ 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

ฉันใช้ Mac OS X 10.7.5


ทดลองและข้อผิดพลาด:

1. ) หลังจากที่ฉันดาวน์โหลดไฟล์. pem ครั้งแรกการอนุญาตของมันถูกตั้งไว้ที่ฉันคิดว่า: 0644

-rw-r - r - @ 1 เจ้าหน้าที่ Toga 1692 ก.พ. 18 21:27 sentiment.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 เจ้าหน้าที่ Toga 1692 ก.พ. 18 21:27 sentiment.pem

ฉันลอง 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 พนักงาน Toga 1692 ก.พ. 18 21:27 sentiment.pem

ฉันลอง SSH ผ่านทางเทอร์มินัลแล้วก็ประสบความสำเร็จ !!

4. ) ตอนนี้เข้าสู่ระบบฉันรันคำสั่งเพื่อคัดลอกไดเรกทอรีระยะไกลไปยังเครื่องคอมพิวเตอร์ของฉันด้วย:

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

ผลตอบแทนใด:

Permission denied (publickey).

คำสั่ง SCP ที่พยายาม:

1. ) เพิ่มคำสั่ง -i และอ้างอิงไฟล์. pem:

scp -i sentiment.pem Todo@54.555.555.555: / home / ubuntu / sentimentfolder / ผู้ใช้ / Toga / เดสก์ท็อป / sentimentlocal

2. ) เพิ่มคำสั่ง -i อ้างถึงไฟล์. pem และเปลี่ยนผู้ใช้สำหรับ AWS เป็นผู้ใช้ ec2:

scp -i sentiment.pem ec2-user@54.555.555.555: / home / ubuntu / sentimentfolder / ผู้ใช้ / Toga / เดสก์ท็อป / sentimentlocal

3. ) เพิ่มคำสั่ง -i อ้างถึงไฟล์. pem เปลี่ยนผู้ใช้สำหรับ AWS เป็นผู้ใช้ ec2 และเพิ่มพา ธ ไฟล์ที่สมบูรณ์สำหรับตำแหน่งของไฟล์. pem:

scp -i /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem ec2-user@54.555.555.555: / home / ubuntu / sentiment / ผู้ใช้ / Toga / เดสก์ท็อป / sentimentlocal


คุณต้องบอกให้ scp ใช้ไฟล์. pem ด้วย
daniel kullmann

ขอบคุณที่โทรหา @danielkullmann ที่สมเหตุสมผล ฉันลองใช้คำสั่งต่าง ๆ ที่อ้างถึงไฟล์. pem โดยตรง แต่ยังไม่ได้ผล ฉันได้อัปเดตคำถามด้วยหัวข้อที่ชื่อ: "คำสั่งพยายามของ SCP" เพื่อทำรายการสิ่งที่ฉันพยายามทำ หากคุณเป็นคำสั่งอื่นโปรดแจ้งให้เราทราบ ขอขอบคุณ.
George Jester

คำตอบ:


110

เยี่ยมชมที่นี่วิธีการเชื่อมต่อกับ Amazon EC2 จากระยะไกลโดยใช้ SSH หรืออ้างอิงด้านล่าง

วิธีการเชื่อมต่อกับ Amazon EC2 จากระยะไกลโดยใช้ SSH:

  1. ดาวน์โหลดไฟล์. pem
  2. ใน Amazon Dashboard เลือก "อินสแตนซ์" จากแถบด้านซ้ายแล้วเลือกอินสแตนซ์ที่คุณต้องการเชื่อมต่อ
  3. คลิกที่ "การทำงาน" จากนั้นเลือก "เชื่อมต่อ"
  4. คลิกที่ "เชื่อมต่อกับไคลเอ็นต์ SSH แบบสแตนด์อโลน"
  5. เปิดหน้าต่าง Terminal
  6. สร้างไดเรกทอรี:

    # mkdir -p ~/.ssh
    
  7. ย้ายไฟล์. pem ที่ดาวน์โหลดไปยังไดเรกทอรี. ssh ที่เราเพิ่งสร้างขึ้น:

    # 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. ใช้คำสั่ง ssh กับชื่อโฮสต์ DNS สาธารณะของคุณเพื่อเชื่อมต่อกับอินสแตนซ์ของคุณ
    เช่น:

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

1
ฉันอยากรู้: ทำไมต้องลงคะแนน?
erik

1
ฉันไม่ได้ลงคะแนนนี้ สิ่งนี้ดูมีประโยชน์จริง ๆ ไม่แน่ใจว่ามันจะแก้ปัญหาเมื่อฉันต้องการ scp จากรีโมตไปยังคอมพ์ของฉันหรือไม่ ฉันจะลองทำดูและจะเกิดอะไรขึ้น ขอบคุณ Babin
George Jester

scp -rเมื่อคัดลอกสารบบทั้งหมดและเนื้อหาของใช้
บาฮามาต

1
คำตอบที่ยอดเยี่ยม เพื่อหลีกเลี่ยงการย้าย pem ไปรอบ ๆ คุณสามารถใช้แฟล็ก ssh -i เพื่อระบุพับลิกคีย์ที่จะใช้ เช่น: ssh -i path / to / ec2private.pem ec2-54-23-23-23-34.example.amazonaws.com
Mafro34

14

chmod 400 {keyfile}.pem เป็นสิ่งที่อเมซอนได้รับคำสั่งและใช้งานได้


นี่คือคำตอบที่ฉันกำลังมองหาคำแนะนำทั้งหมดในคำตอบที่ยอมรับนั้นเป็นแนวปฏิบัติที่ดี ... แต่ไม่เกี่ยวข้องกับปัญหา
sarink

3

ดูเหมือนว่าคุณไม่ควรใช้ที่อยู่ IP แต่ชื่อโฮสต์เต็มของระบบในคำสั่ง SCP เอกสาร AWS อธิบายสิ่งนี้ในhttp://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.htmlภายใต้หัวข้อ "การถ่ายโอนไฟล์ไปยัง Linux / Unix ตัวอย่างจาก Linux / Unix ด้วย SCP"

และใช้-rเพื่อคัดลอกไดเรกทอรี

และโปรดทราบว่าชื่อผู้ใช้เริ่มต้นจะแตกต่างกันไปตามรูปภาพต่าง ๆ :

สำหรับ Amazon ec2-userลินุกซ์ชื่อผู้ใช้เริ่มต้นคือ สำหรับ RHEL5 ชื่อผู้ใช้มักจะเป็นrootแต่อาจเป็นec2-userได้ สำหรับ Ubuntu ubuntuชื่อผู้ใช้ สำหรับ SUSE Linux rootชื่อผู้ใช้ มิฉะนั้นตรวจสอบกับผู้ให้บริการ AMI ของคุณ

ดังนั้นใช้คำสั่งนี้:

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)" มาจากเซิร์ฟเวอร์ระยะไกลดังนั้นคุณอาจใช้คีย์ผิดไม่ได้รับอนุญาตให้เชื่อมต่อหรือมีการพิมพ์ผิดในไฟล์ authorized_keys ระยะไกล


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เป็นคำตอบในเก้าเดือนที่ผ่านมา
สกอตต์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.