ฉันจะตั้งค่าการเข้าถึง SSH สำหรับอินสแตนซ์ Amazon EC2 ได้อย่างไร


88

ฉันต้องการเข้าถึง SSH อินสแตนซ์ Amazon EC2 ที่ใช้ Ubuntu 10.4 ทั้งหมดที่ฉันมีคือชื่อผู้ใช้และรหัสผ่านของ Amazon ความคิดใด ๆ ?


2
อย่าลืมเรียกใช้ chmod 400 my_private_key.pem.txt หลังจากดาวน์โหลดแล้ว
Peter Kaminski

คำตอบ:


160

โดยทั่วไปคุณต้องมีไฟล์คีย์ส่วนตัวเพื่อเข้าสู่ระบบ EC2 ของคุณผ่าน SSH ทำตามขั้นตอนเหล่านี้เพื่อสร้าง:

  • ไปที่https://console.aws.amazon.com/ec2/homeและลงชื่อเข้าใช้บัญชี Amazon ที่คุณมีอยู่
  • คลิกที่ "คู่สำคัญ" ใน LHS หรือhttps://console.aws.amazon.com/ec2/home?region=us-east-1#s=KeyPairs
    • คุณควรเห็นรายการคีย์ที่คุณสร้างขึ้น (หรือระหว่างกระบวนการสร้าง EC2)
    • คลิกที่ "สร้างคู่คีย์" หากคุณไม่เห็นหรือทำคีย์ส่วนตัวหาย
    • ป้อนชื่อเฉพาะและกด Enter
    • แผงดาวน์โหลดจะปรากฏขึ้นเพื่อให้คุณบันทึกคีย์ส่วนตัวบันทึกไว้
    • เก็บไว้ที่ใดที่หนึ่งโดยได้รับอนุญาตไฟล์ "0600"
  • คลิกที่ "อินสแตนซ์" บน LHS หรือhttps://console.aws.amazon.com/ec2/home?region=us-east-1#s=Instances
    • คุณควรเห็นรายการ ec2-instances หากคุณไม่เห็นเลยโปรดสร้างขึ้นมาใหม่
    • คลิกที่เครื่อง EC2 และจดบันทึกที่อยู่ DNS สาธารณะ
  • เปิด Terminal ของคุณ (ใน Linux) แล้วพิมพ์คำสั่งต่อไปนี้
    • ssh -i /path/to/private-key root@<ec2-public-dns-address>- มีการหลีกเลี่ยงชื่อผู้ใช้ root ในรุ่นล่าสุดโดยพิจารณาจากการแจกจ่ายที่คุณเลือกec2-userหรือubuntuเป็นชื่อผู้ใช้ของคุณ
    • กด Enter
    • แค่นั้นแหละ.

6
คุณไม่สามารถเข้าสู่ระบบในฐานะรูทโดยตรงผ่าน ssh คุณจะต้องใช้บัญชีที่ไม่ใช่รูทเช่นec2-userดังนั้น 'ssh -i / path / to / private-key ec2-user @ hostname
timbo

4
เมื่อฉันพยายามเชื่อมต่อมันบอกฉันว่าฉันควรใช้การubuntuเข้าสู่ระบบแทนroot. เห็นได้ชัดว่าฉันมีอินสแตนซ์เซิร์ฟเวอร์ ubuntu 12.04
Vasiliy Stavenko

3
ฉันสร้างบัญชี SSH สำเร็จแล้วขั้นต่อไปคือวิธีอัปโหลดไฟล์โดยใช้ SCP ด้วยบัญชีที่สร้างขึ้น ??? เมื่อฉันพยายามอัปโหลดโดยใช้ SCP มันขึ้นว่า "ปฏิเสธการอนุญาต (คีย์สาธารณะ)"
Ashok KS

5
ยังคงได้รับการนวดนี้ "ปฏิเสธการอนุญาต (คีย์สาธารณะ)" ทำไมถึงเป็นเช่นนั้น?
Kasun Kariyawasam

2
คุณได้รับ "การอนุญาตถูกปฏิเสธ (คีย์สาธารณะ)" อาจใช้ Elastic Beanstalk ในกรณีนี้คุณต้องเข้าไปที่ EB env Config, Security และเลือกคู่คีย์ใหม่ อินสแตนซ์ EC2 ใหม่จะถูกสร้างขึ้นที่ยอมรับคีย์ และชื่อผู้ใช้ec2-userหรืออาจจะแต่ไม่ubuntu root
Jorge Orpinel

25
ssh -i /path/to/private-key ubuntu@<ec2-public-dns-address>

เพียงแค่ใช้ubuntuแทนroot. ปัญหาของคุณจะได้รับการแก้ไข ไชโย!


12

ขั้นตอนที่ 1) ดาวน์โหลดคีย์ส่วนตัวที่กำหนดให้กับเครื่อง ec2 ของคุณ (ซึ่งจะดาวน์โหลดเพียงครั้งเดียวเมื่อสร้างขึ้นดังนั้นขอแนะนำให้กระทำที่ใดที่หนึ่ง)

ขั้นตอนที่ 2) และเริ่มคำสั่งต่อไปนี้

chmod 400 MyKeyPair.pem
ssh -i MyKeyPair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com

เอกสารอย่างเป็นทางการ : การเชื่อมต่อกับอินสแตนซ์ Linux / Unix ของคุณโดยใช้ SSH


7

หมายเหตุผู้ใช้ปัจจุบันสำหรับ 13.04 คือ "ubuntu" ssh -i ./mykey.pem ubuntu@ec2-xxx-xxx-xxx-1.compute-1.amazonaws.com


4

คุณต้องสร้างคู่คีย์ก่อน - โดยใช้คอนโซล EC2 ของคุณ จากนั้นใช้คีย์ส่วนตัวของคุณเพื่อ SSH ในเซิร์ฟเวอร์ (ชื่อผู้ใช้คือec2-user) โดยใช้ไคลเอนต์ SSH ที่คุณเลือก

เมื่อเข้ามาแล้วคุณสามารถออก a sudo su -เพื่อรับรูทได้หากต้องการ (หมายเหตุ: คุณไม่สามารถเข้าสู่ระบบในฐานะรูทโดยตรง)


4

หากคุณใช้ MacOS คุณควรสร้าง / แก้ไขไฟล์กำหนดค่า SSH (~ / .ssh / config) และใส่สิ่งที่ต้องการ:

Host *.amazonaws.com
    User ubuntu
    Port 22
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null
    IdentityFile ~/PATH/YOUR_DOWNLOADED_KEY.pem

จากนั้นเพื่อเชื่อมต่อกับอินสแตนซ์ EC2 ใด ๆ :

ssh MYNAME.amazonaws.com

ไม่มีอะไรมาก!


จะเกิดอะไรขึ้นถ้าฉันมีคีย์หลายเพื่อนสำหรับภูมิภาคต่างๆเช่น us-east-1.pem และ us-west-2.pem
Haseeb

1

ในการตั้งค่า Ubuntu บน AWS โปรดทำตามขั้นตอนต่อไปนี้:

  1. เข้าสู่ระบบในAmazon Web ServicesและเลือกEC2
  2. เลือกเปิดอินสแตนซ์และทำตามตัวช่วยโดยการเลือกภาพขวา (Ubuntu) ประเภทเช่นการกำหนดค่าเครือข่ายและ VPC เน็ต, การเก็บรักษาและช่วยให้เข้าถึง SSH ในกลุ่มความปลอดภัย จากนั้นเปิดตัว
  3. ในครั้งแรกคุณอาจต้องตั้งค่าคู่คีย์และกำหนดให้กับอินสแตนซ์ นอกจากนี้คุณยังสามารถสร้างคู่สำคัญในคู่คีย์ เมื่อสร้างเสร็จแล้วให้ดาวน์โหลดไฟล์ PEM และเก็บไว้ในที่ปลอดภัย
  4. เมื่ออินสแตนซ์เปิดตัวรอจนกว่าอินสแตนซ์เริ่มต้นและการทำงาน

ในการเข้าถึงอินสแตนซ์ผ่าน SSH ให้รัน:

  1. เชื่อมต่อกับกล่อง Linux โดยระบุไฟล์ PEM ของคุณเช่น

    ssh -i "file.pem" ubuntu@x.x.x.x
    

    ตรวจสอบว่าไฟล์ PEM ของคุณมีสิทธิ์ 600 ( chmod 600 file.pem)

การแก้ไขปัญหา

หากคุณกำลังใช้อินสแตนซ์ VPC และกลุ่มรักษาความปลอดภัยของคุณถูกต้อง (ตามกฎระเบียบทางด้านขวา) และมันก็ยังคงไม่ได้ทำงานในVPCส่วนการตรวจสอบเครือข่ายย่อยของคุณที่ควรจะแนบมากับคุณVPC (ทั้งที่ใช้โดยอินสแตนซ์ของคุณ) และการติดตั้ง กฎใหม่ในตารางเส้นทางที่มี0.0.0.0/0เป็นปลายทางของคุณและอินเทอร์เน็ตเกตเวย์เป็นเป้าหมาย

สำหรับรายละเอียดเพิ่มเติมตรวจสอบ: การแก้ไขปัญหาการเชื่อมต่อกับอินสแตนซ์ของคุณ

ดูเพิ่มเติม: สาเหตุที่เป็นไปได้สำหรับการหมดเวลาเมื่อพยายามเข้าถึงอินสแตนซ์ EC2


1

1) เป็นครั้งแรกสำหรับการ จำกัด การอนุญาตไฟล์ดังต่อไปนี้chmod.pem file

chmod 400 my-key-pair.pem

2) จากนั้น sshใช้คำสั่งต่อไปนี้โดยตรงจาก.sshโฟลเดอร์

ssh -i my-key-pair.pem ec2-user@ec2-198-99-90-3.compute-1.amazonaws.com

หมายเหตุ: - เพื่อไปยัง.sshโฟลเดอร์ กดครั้งแรกCtrl + Hเพื่อแสดงไฟล์ที่ซ่อนอยู่ทั้งหมดและสุดท้ายcd .ssh


0

การไม่เข้าสู่ระบบในฐานะผู้ใช้ที่ถูกต้องสำหรับ OS Distro ของคุณอาจเป็นปัญหาได้ สำหรับ AMI ใหม่บางชื่อผู้ใช้อาจไม่ใช่ "ubuntu" แต่เป็น "ec2-user" ตัวอย่างเช่นสำหรับ Amazon Linux ฉันเชื่อว่าผู้ใช้คือ "ผู้ใช้ ec2" Eric Hammond ยกตัวอย่างที่นี่: http://alestic.com/2014/01/ec2-ssh-username

ข้อเสนอแนะของฉันลอง:

ssh -i /path/to/file.pem ec2-user@ec2...

ssh -i /path/to/file.pem ubuntu@ec2...

ssh -i /path/to/file.pem root@ec2...

หากคุณมี AMI ที่ไม่ถูกต้องคุณอาจต้องการรีสตาร์ทเครื่องทั้งหมดเพื่อให้คุณมีความสม่ำเสมอระหว่างคลัสเตอร์ของคุณ ถ้านี่คือปัญหาของคุณคุณอาจต้องการ OS Distro เดียวกันอย่างน้อยสำหรับกล่อง linux ของคุณ


0

การทำตามคำแนะนำในคำตอบทั้งหมดนี้ไม่เพียงพอ ในแต่ละอินสแตนซ์คุณจะเห็นกลุ่มความปลอดภัย เมื่อคุณเปิดอินสแตนซ์ใหม่คุณจะตั้งค่านี้เป็นค่าเริ่มต้น คุณต้องแก้ไขกลุ่มความปลอดภัยและเพิ่มพอร์ต ssh ในภายหลังคุณต้องเพิ่มพอร์ต 8080, 8443, 80, 443 เมื่อคุณต้องการโฮสต์เว็บไซต์ของคุณ


0

ฉันยอมรับข้อเสนอของ AWS เพื่อใช้กลุ่มความปลอดภัยเริ่มต้นซึ่งรวมพอร์ต 'All Trafic'

และหลังจากพยายามเชื่อมต่อกับอินสแตนซ์ ec2 ใหม่ของฉันหลายต่อหลายครั้งฉันเพิ่งรู้ว่าควรแก้ไขกลุ่มความปลอดภัยที่ใช้แล้วและเพิ่มพอร์ต 22 (ssh) ขาเข้าและขาออกด้วยตนเอง!

หวังว่าจะช่วยได้!


0

ครั้งแรกเปลี่ยนสิทธิ์ของไฟล์ pem โดย

chmod 400 path/to/key_pair.pem

ภายในไฟล์ ~ / .ssh / config ให้เพิ่มบรรทัดต่อไปนี้ที่ด้านบนของไฟล์

Host AWS
     Hostname myserver.com
     User myuser
     IdentityFile path/to/.pem/file
     port 22

ชื่อโฮสต์ใช้ IP หรือลิงก์ของเซิร์ฟเวอร์ผู้ใช้ใช้ชื่อผู้ใช้ของเซิร์ฟเวอร์และไฟล์ Identity ถูกดาวน์โหลดจาก AWS เมื่อคุณสร้างอินสแตนซ์ เพียงเรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล

ssh AWS

และสนุกกับมัน!

หมายเหตุ : เพื่อไปยัง.sshโฟลเดอร์ ขั้นแรกให้กดCtrl + Hในโฮมโฟลเดอร์เพื่อแสดงไฟล์ที่ซ่อนอยู่ทั้งหมดและสุดท้ายcd .ssh


0

ตรวจสอบสิ่งเหล่านี้ให้ดี

  1. คีย์ส่วนตัวต้องได้รับอนุญาต 400

  2. ตรวจสอบให้แน่ใจว่าพอร์ต 22 เปิดอยู่สำหรับอินสแตนซ์ AWS ที่คุณพยายามเข้าถึง

  3. ssh -i privatekey.pem ubuntu@XXX.XXX.XXX.XXX // XXX.XXX.XXX.XXX = ip สาธารณะของอินสแตนซ์ของคุณ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.