เปลี่ยนคู่กุญแจสำหรับอินสแตนซ์ของ ec2


408

ฉันจะเปลี่ยนคู่กุญแจสำหรับอินสแตนซ์ ec2 ของฉันในคอนโซลการจัดการ AWS ได้อย่างไร ฉันสามารถหยุดอินสแตนซ์ฉันสามารถสร้างคู่คีย์ใหม่ แต่ฉันไม่เห็นลิงก์ใด ๆ เพื่อแก้ไขคู่คีย์ของอินสแตนซ์


1
ฉันทำตามขั้นตอนที่ระบุในวิดีโอนี้และทำงานได้youtube.com/watch?v=OF2AOekW4IE
Jonathan Nolasco Barrientos

คำตอบ:


491

คำตอบนี้มีประโยชน์ในกรณีที่คุณไม่สามารถเข้าถึง SSH ไปยังเซิร์ฟเวอร์ที่มีอยู่ได้อีกต่อไป (เช่นคุณทำรหัสส่วนตัวหาย)

หากคุณยังคงมีการเข้าถึง SSH โปรดใช้หนึ่งในคำตอบด้านล่าง

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#replacing-lost-key-pair

นี่คือสิ่งที่ฉันทำขอบคุณโพสต์บล็อกของ Eric Hammond:

  1. หยุดการทำงานของอินสแตนซ์ EC2
  2. ถอด/dev/xvda1โวลุ่มของมัน(เรียกมันว่าโวลุ่ม A) - ดูที่นี่
  3. เริ่มอินสแตนซ์ t1.micro EC2 ใหม่โดยใช้คู่คีย์ใหม่ของฉัน ตรวจสอบให้แน่ใจว่าคุณสร้างมันในซับเน็ตเดียวกันมิฉะนั้นคุณจะต้องยกเลิกอินสแตนซ์และสร้างอีกครั้ง - ดูที่นี่
  4. แนบโวลุ่ม A กับอินสแตนซ์ขนาดเล็กใหม่ในฐานะ/dev/xvdf(หรือ/dev/sdf)
  5. SSH ไปยังอินสแตนซ์ขนาดเล็กใหม่และเมานต์โวลุ่ม A ถึง /mnt/tmp

    $ sudo mount / dev / xvdf1 / mnt / tmp

  6. คัดลอก~/.ssh/authorized_keysไปยัง/mnt/tmp/home/ubuntu/.ssh/authorized_keys

  7. ออกจากระบบ
  8. ยุติอินสแตนซ์ขนาดเล็ก
  9. ถอดโวลุ่ม A ออกจากมัน
  10. แนบโวลุ่ม A กลับไปที่อินสแตนซ์หลักเช่น /dev/xvda
  11. เริ่มอินสแตนซ์หลัก
  12. เข้าสู่ระบบเหมือนก่อนโดยใช้.pemไฟล์ใหม่ของคุณ

แค่นั้นแหละ.


6
เพิ่งบันทึกตูดของฉันคุณเป็นตำนาน!
แกร์รีเชื่อม

8
mkdir /mnt/tmpจากนั้นmount /dev/xvdf /mnt/tmpควรทำเคล็ดลับสำหรับ # 5 และอย่าลืมขั้นตอนที่ 13 อาจเป็นrm ~/.ssh/known_hostsในกล่องที่คุณเชื่อมต่อ
brandonscript

21
นี่มันส่งกลิ่นมาก ... ก่อนอื่นดูคำตอบของ Eric Hammond ด้านล่าง ที่สอง: ตอบโดย Pat Mcb พวกเขาแสดงในสิ่งเดียวกัน แต่ไม่เสียเวลา 1 ชั่วโมงในการทำวิธีแก้ปัญหาเฮฮา PS ดูstackoverflow.com/a/24143976/547223
kgadek

3
ผมเขียนคำแนะนำเฉพาะจริงๆนี่เป็นที่ที่สร้างตามคำตอบนี้ แต่เป็นหลักคิดเดียวกัน - gist.github.com/tamoyal/1b7ec4d3871b343d353d ดังที่ @kgadek กล่าวไว้มันสกปรกและใช้เวลานาน แต่เป็นตัวเลือกที่ดีถ้าคุณถูกล็อกออกจากเซิร์ฟเวอร์ที่คุณต้องการทำการเปลี่ยนแปลงที่สำคัญและถ้าคุณไม่ต้องการแยกสำเนาของเซิร์ฟเวอร์นั้น ใช้เวลาประมาณ 5-10 นาทีต่อครั้งไม่ใช่ชั่วโมง
โทนี่

4
คำตอบที่โพสต์โดย @Eric และ @Pat เป็นคำตอบสำหรับผู้ที่ต้องการใช้คู่กุญแจที่แตกต่างกันสำหรับอินสแตนซ์ของพวกเขา สิ่งเหล่านี้ไม่ได้ช่วยให้ผู้ใช้ที่สูญเสียไฟล์คู่คีย์ในตอนแรก โดยไม่ต้องถอดวอลลุ่มและติดกับอินสแตนซ์อื่นคุณจะควบคุมวอลลุ่มนั้นได้อย่างไร นับประสาแทน.ssh/authorized_keysไฟล์ต้นฉบับ
sanjeev

187

เมื่อเริ่มต้นอินสแตนซ์แล้วจะไม่มีวิธีเปลี่ยน keypair ที่เชื่อมโยงกับอินสแตนซ์ที่ระดับข้อมูลเมตา แต่คุณสามารถเปลี่ยนคีย์ ssh ที่คุณใช้เพื่อเชื่อมต่อกับอินสแตนซ์ได้

มีกระบวนการเริ่มต้นสำหรับ AMIs ส่วนใหญ่ที่ดาวน์โหลดคีย์สาธารณะ ssh และติดตั้งในไฟล์. ssh / authorized_keys เพื่อให้คุณสามารถใช้ ssh ในฐานะผู้ใช้นั้นโดยใช้คีย์ส่วนตัว ssh ที่สอดคล้องกัน

หากคุณต้องการเปลี่ยนคีย์ ssh ที่คุณใช้เพื่อเข้าถึงอินสแตนซ์คุณจะต้องแก้ไขไฟล์ authorized_keys บนอินสแตนซ์ของตัวเองและแปลงเป็นคีย์สาธารณะ ssh ใหม่ของคุณ

ไฟล์ authorized_keys อยู่ภายใต้ไดเร็กทอรีย่อย. ssh ภายใต้โฮมไดเร็กทอรีของผู้ใช้ที่คุณกำลังล็อกอิน ขึ้นอยู่กับ AMI ที่คุณกำลังใช้อาจเป็นหนึ่งใน:

/home/ec2-user/.ssh/authorized_keys
/home/ubuntu/.ssh/authorized_keys
/root/.ssh/authorized_keys

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

ในขณะที่คุณกำลังคิดเกี่ยวกับ ssh keypairs บน EC2 ฉันแนะนำให้อัปโหลดกุญแจสาธารณะ ssh ของคุณเองไปยัง EC2 แทนที่จะให้ Amazon สร้าง keypair ให้คุณ

นี่คือบทความที่ฉันเขียนเกี่ยวกับเรื่องนี้:

การอัปโหลดคีย์ ssh ส่วนตัวไปที่ Amazon EC2
http://alestic.com/2010/10/ec2-ssh-keys

สิ่งนี้จะใช้กับอินสแตนซ์ใหม่ที่คุณใช้เท่านั้น


ฉันทำผิดพลาดอย่างโง่เขลาฉันหมายความว่าฉันแก้ไขไฟล์ authorized_keys และออกจากระบบ ตอนนี้ไม่สามารถ SSH กลับ :( ข้อเสนอแนะใดแก้ไขอย่างรวดเร็ว.
aatifh

11
aatifh: นี่คือบทความที่ฉันเขียนเกี่ยวกับวิธีทำให้ตัวเองหลุดพ้นจากสถานการณ์นั้น: alestic.com/2011/02/ec2-fix-ebs-root
Eric Hammond

@EricHammond นี่อาจจะนอกสถานที่ แต่ดูเหมือนว่าคุณจะรู้ว่ามันทำงานอย่างไร ... ฉันตั้งค่าอินสแตนซ์ EC2 วันนี้และได้รับ.pemไฟล์กุญแจส่วนตัวบน Mac ของฉัน แต่ssh -i key.pemไม่ได้ตรวจสอบ (ปฏิเสธสิทธิ์) ในคอนโซลการจัดการ EC2 ภายใต้ชื่อคู่ที่สำคัญมันไม่มีรายการอะไรเลย นี่เป็นสิ่งที่น่าตกใจสำหรับฉัน ฉันจะตั้งค่านี้ได้อย่างไร ปรากฏขึ้นตาม Management Console ว่าไม่มีการกำหนดคู่กุญแจที่ฉันกำหนดค่าให้กับอินสแตนซ์!
Steven Lu

1
@StevenLu: ใช่กระทู้แสดงความคิดเห็นผิดที่จะถามคำถามใหม่ ลองสร้างคำถามใหม่บนserverfault.com (เหมาะสมกว่าสำหรับปัญหานั้นมากกว่าสแต็คโอเวอร์โฟลว์)
Eric Hammond

4
นี่เป็นซับในตัวเล็ก ๆ ที่ดีสำหรับการเพิ่มคีย์ของคุณ นี่เป็นเพียงการเพิ่มรหัสผับปกติของคุณนอกเหนือจาก AWS ที่สร้างขึ้นดังนั้นถ้ามันไม่ทำงานคุณจะไม่ล็อคตัวเอง: stackoverflow.com/a/5654728/193494
Kevin C.

78

เรียกใช้คำสั่งนี้หลังจากที่คุณดาวน์โหลด AWS pem

ssh-keygen -f YOURKEY.pem -y

authorized_keysแล้วถ่ายโอนข้อมูลการส่งออกเข้าสู่

หรือคัดลอกไฟล์ pem ไปยังอินสแตนซ์ AWS ของคุณและดำเนินการคำสั่งต่อไปนี้

chmod 600 YOURKEY.pem

แล้ว

ssh-keygen -f YOURKEY.pem -y >> ~/.ssh/authorized_keys

14
สิ่งนี้ใช้ได้เฉพาะเมื่อคุณมีการเข้าถึงระบบใช่ไหม? (เช่นไม่สูญหายไฟล์. pem เก่า)
แดเนียล

5
คุณสามารถใช้> แทน >> เพื่อแทนที่ผู้ใช้ปัจจุบันแทนการเพิ่มได้
Adrian Lopez

นี่คือคำตอบที่ถูกต้องและง่ายที่สุด ไม่จำเป็นต้องรีสตาร์ทสร้างอินสแตนซ์ใหม่หรือเชื่อมต่อไดรฟ์ เพิ่งได้รับ. pem, keygen และเพิ่มลงใน authorized_hosts
Spanky

ฉันได้ทำ ssh-keygen -f YOURKEY.pem -y >> ~ / .ssh / authorized_keys แต่ sitll ไม่สามารถเข้าถึง ec2 ของฉันได้ด้วย pubic key ใหม่
manukyanv07

ฉันเรียกใช้และรหัสท้องถิ่นของฉันไม่เปลี่ยนแปลง
Luiz

50

คำแนะนำจากการสนับสนุน AWS EC2:

  1. เปลี่ยนชื่อล็อกอินของ pem
  2. ไปที่ EC2 Console ของคุณ
  3. ภายใต้เครือข่ายและความปลอดภัยคลิกที่คู่คีย์คลิกที่สร้างคู่คีย์
  4. ตั้งชื่อคีย์ใหม่ให้คู่ของคุณบันทึกไฟล์. pem ชื่อของคู่กุญแจจะถูกใช้เพื่อเชื่อมต่อกับอินสแตนซ์ของคุณ
  5. สร้างการเชื่อมต่อ SSH กับอินสแตนซ์ของคุณและเปิดไว้
  6. ใน PuttyGen คลิก "โหลด" เพื่อโหลดไฟล์. pem ของคุณ
  7. รักษาการเลือกปุ่มตัวเลือก SSH-2 RSA คลิกที่ "บันทึกคีย์ส่วนตัว" คุณจะได้รับคำเตือนหน้าต่างป๊อปอัพคลิก "ใช่"
  8. คลิกที่ "บันทึกกุญแจสาธารณะ" เช่นกันเพื่อสร้างรหัสสาธารณะ นี่คือรหัสสาธารณะที่เราจะคัดลอกไปยังอินสแตนซ์ปัจจุบันของคุณ
  9. บันทึกคีย์สาธารณะด้วยชื่อคู่คีย์ใหม่และนามสกุล. pub
  10. เปิดเนื้อหากุญแจสาธารณะใน Notepad
  11. คัดลอกเนื้อหาด้านล่าง "ความคิดเห็น:" import-openssh-key "และก่อน" ---- END SSH2 พับลิกคีย์ ----
    หมายเหตุ - คุณต้องคัดลอกเนื้อหาเป็นหนึ่งบรรทัด - ลบบรรทัดใหม่ทั้งหมด
  12. ในอินสแตนซ์ที่เชื่อมต่อของคุณให้เปิดไฟล์ authorized_keys ของคุณโดยใช้เครื่องมือ vi เรียกใช้คำสั่งต่อไปนี้: vi .ssh / authorized_keys คุณควรเห็นรหัสสาธารณะดั้งเดิมในไฟล์ด้วย
  13. เลื่อนเคอร์เซอร์ไปที่ไฟล์ไปยังจุดสิ้นสุดของเนื้อหากุญแจสาธารณะอันแรกของคุณ: พิมพ์ "i" เพื่อแทรก
  14. บนบรรทัดใหม่พิมพ์ "ssh-rsa" และเพิ่มช่องว่างก่อนที่คุณจะวางเนื้อหาของกุญแจสาธารณะช่องว่างและชื่อของไฟล์. pem (โดยไม่ต้อง. pem) หมายเหตุ - คุณควรได้รับบรรทัดที่มี รูปแบบเดียวกับบรรทัดก่อนหน้า
  15. กดปุ่ม Esc แล้วพิมพ์: wq!

สิ่งนี้จะบันทึกไฟล์ authorized_keys ที่ได้รับการปรับปรุง

ตอนนี้ลองเปิดเซสชัน SSH ใหม่กับอินสแตนซ์ของคุณโดยใช้คีย์ pai ใหม่ของคุณ

เมื่อคุณยืนยันว่าคุณสามารถใช้ SSH ในอินสแตนซ์โดยใช้คู่คีย์ใหม่คุณสามารถ vi .ssh / authorized_key และลบคีย์เก่า

ตอบข้อสังเกต Shaggie:

หากคุณไม่สามารถเชื่อมต่อกับอินสแตนซ์ (เช่นคีย์เสียหาย) กว่าใช้คอนโซล AWS เพื่อแยกโวลุ่ม ( http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume.html) ) และใส่กลับเข้าไปในอินสแตนซ์ที่ใช้งานได้ดีกว่าเปลี่ยนคีย์บนโวลุ่มและใส่กลับไปเป็นอินสแตนซ์ก่อนหน้า


6
ควรเป็นคำตอบที่ดีที่สุด

2
จะเกิดอะไรขึ้นถ้าคีย์เก่าเสียหายและคุณไม่สามารถเชื่อมต่อกับอินสแตนซ์ผ่านผงสำหรับอุดรูได้เนื่องจากคุณไม่มีไฟล์ ppk เก่า ???
Shaggie

3
จะทำอย่างไรถ้าคุณไม่มีการเข้าถึง SSH ดังนั้นปัญหานี้
Jayden Lawson

3
Jayden Lawson ถ้าคุณไม่มีการเชื่อมต่ออินเทอร์เน็ต
Elia Weiss

1
อาจเกิดขึ้นที่คู่คีย์ร่วมกับบุคคลอื่นและตอนนี้จำเป็นต้องเปลี่ยนคู่คีย์เพื่อให้บุคคลนั้นไม่สามารถเข้าสู่ระบบได้อีกต่อไปหรือเหตุผลอื่น ๆ อีกมากมายเช่นนี้
Harikrishna

38

ฉันสังเกตเห็นว่าเมื่อจัดการโดย Elastic Beanstalk คุณสามารถเปลี่ยนคู่คีย์ EC2 ที่ใช้งานอยู่ของคุณ ภายใต้ Elastic Beanstalk> การกำหนดค่า> ความปลอดภัยเลือกคีย์ใหม่จากดร็อปดาวน์คู่คีย์ EC2 คุณจะเห็นข้อความนี้ถามว่าคุณแน่ใจหรือไม่:

EC2KeyName: การเปลี่ยนแปลงการตั้งค่าตัวเลือก EC2KeyName จะไม่มีผลทันที อินสแตนซ์ EC2 ที่มีอยู่ของคุณแต่ละรายการจะถูกแทนที่และการตั้งค่าใหม่ของคุณจะมีผล

อินสแตนซ์ของฉันสิ้นสุดลงแล้วเมื่อฉันทำสิ่งนี้ จากนั้นจึงเริ่มยกเลิกและเริ่มต้นอีกครั้ง เห็นได้ชัดว่า "การแทนที่" หมายถึงการยกเลิกและสร้างอินสแตนซ์ใหม่ หากคุณได้มีการปรับเปลี่ยนปริมาณการบูตของคุณสร้าง AMI แรกแล้วระบุว่า AMI ในเดียวกันยืดหยุ่นฝักถั่ว> การกำหนดค่า> อินสแตนซ์ในรูปแบบเป็นที่กำหนดเอง AMI ID สิ่งนี้ยังเตือนเกี่ยวกับการแทนที่อินสแตนซ์ EC2

หลังจากที่คุณแก้ไขคู่คีย์ EC2 และรหัส AMI ที่กำหนดเองและหลังจากเห็นคำเตือนเกี่ยวกับทั้งคู่แล้วให้คลิกบันทึกเพื่อดำเนินการต่อ

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


1
ตอนนี้อยู่ในส่วน 'ความปลอดภัย' ของการกำหนดค่า
Will Demaine

ขอบคุณ @WillDemaine ไม่ได้ใช้ AWS ในขณะนี้ดังนั้นฉันจะใช้คำของคุณและอนุมัติการแก้ไข!
Mark Berry

31

ฉันใช้วิธีนี้และหลังจากนั้นไม่นานก็สามารถทำให้มันใช้ได้ การขาดคำสั่งจริงทำให้มันยาก แต่ฉันก็คิดออก HOWEVER - ค้นพบและทดสอบวิธีที่ง่ายกว่ามากหลังจาก:

  1. บันทึกอินสแตนซ์ของคุณเป็น AMI (รีบูตหรือไม่ฉันขอแนะนำให้รีบูต) วิธีนี้จะใช้งานได้หาก EBS สำรองไว้
  2. จากนั้นเริ่มต้นตัวอย่างจาก AMI นี้และกำหนด Keyfile ใหม่ของคุณ
  3. ย้าย IP ที่มีความยืดหยุ่นของคุณ (ถ้ามี) ไปที่อินสแตนซ์ใหม่ของคุณและคุณทำเสร็จแล้ว

ทั้งหมดนี้ใช้งานได้สำหรับฉันหลังจากฉันลบโดยไม่ตั้งใจ ~ / .ssh
morri

ฉันทำเช่นเดียวกันและทำงานได้ตอนนี้ฉันสามารถเข้าสู่ระบบด้วย pem ใหม่ แต่ฉันยังสามารถเข้าสู่ระบบด้วย pem เก่า ดังนั้นตอนนี้ 2 pems นั้นถูกต้อง
Vitaly

FYI นี่เป็นวิธี GUI ที่ง่ายอย่างรวดเร็วในการหมุน EC2 ใหม่ด้วยคีย์ที่แตกต่างกันหากไม่ว่าง แต่เนื่องจาก @vitaly พบว่าคุณมีคีย์ pem เก่ายังใช้ได้ต้องไปที่ /home/ec2-user/.ssh/authorized_keys และลบ รหัส pem เก่าจากไฟล์ ขอบคุณสำหรับวิธีการเปลี่ยนปุ่ม Pem ด่วนดีและง่ายเมื่อไม่มีเวลา
Blu Towers

สิ่งนี้ไม่ได้ผลสำหรับฉัน AWS ยังคงบอกว่ารหัสผ่านไม่สามารถใช้งานได้กับข้อความอื่นที่กล่าวถึงว่าหากมีการสร้างอินสแตนซ์จาก AMI จะใช้ข้อมูลประจำตัวของภาพหลัก
เบรดี้

15

หากปฏิบัติตามขั้นตอนด้านล่างจะช่วยประหยัดเวลาได้มากและไม่จำเป็นต้องหยุดการทำงานของอินสแตนซ์

  1. เริ่มอินสแตนซ์ t1.micro EC2 ใหม่โดยใช้คู่คีย์ใหม่ ตรวจสอบให้แน่ใจว่าคุณสร้างมันในซับเน็ตเดียวกันมิฉะนั้นคุณจะต้องยกเลิกอินสแตนซ์และสร้างอีกครั้ง
  2. SSH ไปยังอินสแตนซ์ขนาดเล็กใหม่และคัดลอกเนื้อหาของ~ / .ssh / authorized_keysบางแห่งในคอมพิวเตอร์ของคุณ
  3. เข้าสู่ระบบเช่นหลักที่มีคีย์ SSH เก่า
  4. คัดลอกและแทนที่เนื้อหาไฟล์จากจุดที่ 2 ถึง ~ / .ssh / authorized_keys
  5. ตอนนี้คุณสามารถเข้าสู่ระบบได้อีกครั้งด้วยรหัสใหม่เท่านั้น รหัสเก่าจะไม่ทำงานอีกต่อไป

อย่างนั้นแหละ. สนุก:)


14

ฉันเชื่อว่า aproach ที่ง่ายที่สุดคือ:

  1. สร้างภาพ AMI ของอินสแตนซ์ที่มีอยู่
  2. เรียกใช้อินสแตนซ์ EC2 ใหม่โดยใช้อิมเมจ AMI (สร้างตามขั้นตอนที่ 1) ด้วยคู่ของคีย์ใหม่
  3. ลงชื่อเข้าใช้อินสแตนซ์ EC2 ใหม่ด้วยรหัสใหม่

@Brady อะไรไม่ทำงานเลย? ทำภาพรวมหรือไม่? เปิดตัวอินสแตนซ์? เข้าสู่ระบบ?
Sergey

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

นี่ไม่ใช่วิธีการแก้ปัญหาเนื่องจาก @Brady ระบุว่าไม่ทำงาน
Greg Sansom

8

ในกรณีที่คุณใช้แพลตฟอร์ม ElasticBeanstalk คุณสามารถเปลี่ยนปุ่มได้โดยไปที่:

  • แผงยืดหยุ่น Beanstalk
  • องค์ประกอบ
  • อินสแตนซ์ (ฟันเฟืองบนขวา)
  • คู่กุญแจ EC2

สิ่งนี้จะยุติอินสแตนซ์ปัจจุบันและสร้างใหม่ด้วยคีย์ / การตั้งค่าที่เลือก


2
นี่คือคำตอบที่ง่ายที่สุดที่นี่ให้กับคุณเมื่อ ElasticBeanstalk
Yuval Karmi

2
คำเตือน ! นี่เป็นทางออกที่อันตราย AWS จะรีเซ็ตที่เก็บข้อมูล (เช่น HDD เสมือน) ที่เชื่อมต่อกับอินสแตนซ์นั้น (!!) ดังนั้นคุณต้องถอดที่เก็บข้อมูลออกและหลังจากที่เพิ่มอินสแตนซ์ใหม่ให้แนบอีกครั้งแทนที่จะเป็นที่เก็บข้อมูลใหม่ที่มาพร้อมกับอินสแตนซ์ใหม่ แน่นอนว่ามันจะดีที่สุดเพราะมันไม่ใช่
วอล

7

มีสองสถานการณ์ที่ถามในคำถามนี้: -

1) คุณไม่มีสิทธิ์เข้าถึงไฟล์. pemนั่นเป็นสาเหตุที่คุณต้องการสร้างไฟล์ใหม่

2) คุณมี การเข้าถึงไฟล์ pem กับคุณแต่คุณเพียงต้องการที่จะเปลี่ยนแปลงหรือสร้างไฟล์ .pem ใหม่สำหรับช่องโหว่ด้านความปลอดภัยหรือวัตถุประสงค์บางอย่าง

ดังนั้นถ้าคุณสูญเสียคีย์ของคุณคุณสามารถเลื่อนขึ้นและดูคำตอบอื่นแต่ถ้าคุณเพียงแค่เปลี่ยนไฟล์. pem ของคุณเพื่อความปลอดภัยให้ทำตามขั้นตอน: -

1) ไปที่ล็อกอินคอนโซล AWS และสร้างไฟล์. pem ใหม่จากส่วนคู่คีย์ตรงนั้น มันจะดาวน์โหลดไฟล์. pem โดยอัตโนมัติลงในพีซีของคุณ

2) เปลี่ยนสิทธิ์เป็น 400 หากคุณใช้ Linux / ubuntu กดคำสั่งด้านล่าง

chmod 400 yournewfile.pem

3) สร้าง RSA ของไฟล์ที่ดาวน์โหลดใหม่ในเครื่องของคุณ

ssh-keygen -f yournewfile.pem -y

4) คัดลอกรหัส RSA จากที่นี่

5) ตอนนี้ SSH กับอินสแตนซ์ของคุณผ่านไฟล์. pem ก่อนหน้า

ssh -i oldpemfileName.pem username@ipaddress

sudo vim  ~/.ssh/authorized_keys

6) ให้พื้นที่หนึ่งบรรทัดสองและวาง RSA คัดลอกของไฟล์ใหม่ที่นี่แล้วบันทึกไฟล์

7) ตอนนี้ไฟล์. pem ใหม่ของคุณเชื่อมโยงกับอินสแตนซ์ที่กำลังทำงานอยู่

8) หากคุณต้องการปิดการใช้งานการเข้าถึงไฟล์. pem ก่อนหน้านี้เพียงแค่แก้ไข

sudo vim ~/.ssh/authorized_keys

ไฟล์และลบหรือเปลี่ยน RSA ก่อนหน้าจากที่นี่

หมายเหตุ: -ลบอย่างระมัดระวังเพื่อให้ RSA ที่สร้างขึ้นใหม่ไม่ได้รับการเปลี่ยนแปลง

ด้วยวิธีนี้คุณสามารถเปลี่ยน / เชื่อมต่อไฟล์. pem ใหม่กับอินสแตนซ์ที่ใช้งานอยู่

คุณสามารถเพิกถอนการเข้าถึงไฟล์. pem ที่สร้างไว้ก่อนหน้านี้เนื่องจากวัตถุประสงค์ด้านความปลอดภัย

หวังว่ามันจะช่วย!


2
ฉันชอบวิธีนี้เพราะไม่ต้องการให้ฉันสร้างอินสแตนซ์ใหม่ด้วยอิมเมจ AMI แช่แข็ง แต่วิธีนี้สามารถเปลี่ยนชื่อคีย์แพร์ที่เกี่ยวข้องของอินสแตนซ์ EC2 ในแดชบอร์ด EC2 ได้หรือไม่ @Parveen yadav
ติดยาเสพติด

6

ทางออกที่ง่ายที่สุดคือการคัดลอกเนื้อหาของ

~/.ssh/id_rsa.pub

ลงใน authorized_keys ของ AWS ของคุณที่

~/.ssh/authorized_keys

สิ่งนี้จะช่วยให้คุณสามารถ ssh ในอินสแตนซ์ของ EC2 โดยไม่ต้องระบุไฟล์ pem สำหรับคำสั่ง ssh คุณสามารถลบปุ่มอื่น ๆ ทั้งหมดเมื่อคุณทดสอบการเชื่อมต่อแล้ว

หากคุณต้องการสร้างคีย์ใหม่เพื่อแชร์กับบุคคลอื่นคุณสามารถทำได้ด้วย:

ssh-keygen -t rsa

ซึ่งจะสร้างไฟล์ private.pem ส่วนตัวและคุณจะได้รับกุญแจสาธารณะของมันด้วย:

ssh-keygen -f private_key.pem -y > public_key.pub

ทุกคนที่มี private_key.pem จะสามารถเชื่อมต่อกับ

ssh user@host.com -i private_key.pem

4
ฉันจะเข้าถึงได้อย่างไร~/.ssh/authorized_keysเมื่อฉันไม่สามารถแม้แต่อินสแตนซ์ของ SSH aws ได้
prayagupd

3
ฉันเชื่อว่าบรรทัดสุดท้ายของคุณไม่ถูกต้องคุณจะสามารถเชื่อมต่อได้หากคุณมีรหัสส่วนตัว .. ssh -i private_key.pem user@host.com หากคุณต้องการคนที่จะทำให้คุณเข้าถึงอินสแตนซ์ของพวกเขาคุณสามารถแบ่งปันกุญแจสาธารณะของคุณกับพวกเขาและพวกเขาสามารถเพิ่มเข้าไปใน authorized_keys ของพวกเขาเพื่อให้คุณสามารถเข้าถึงอินสแตนซ์ในฐานะผู้ใช้ว่า ...
code4cause

5

คุณไม่จำเป็นต้องไปยังอุปกรณ์รากหมุนและเปลี่ยนคีย์สาธารณะ SSH authorized_keysใน เพื่อให้สามารถใช้ userdata เพื่อเพิ่มคีย์ ssh ให้กับอินสแตนซ์ใด ๆ ก่อนอื่นคุณต้องสร้าง KeyPair ใหม่โดยใช้คอนโซล AWS หรือผ่าน ssh-keygen

ssh-keygen -f YOURKEY.pem -y

สิ่งนี้จะสร้างรหัสสาธารณะสำหรับ SSH KeyPair ใหม่ของคุณคัดลอกกุญแจสาธารณะนี้และใช้ในสคริปต์ด้านล่าง

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
/bin/echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6xigPPA/BAjDPJFflqNuJt5QY5IBeBwkVoow/uBJ8Rorke/GT4KMHJ3Ap2HjsvjYrkQaKANFDfqrizCmb5PfAovUjojvU1M8jYcjkwPG6hIcAXrD5yXdNcZkE7hGK4qf2BRY57E3s25Ay3zKjvdMaTplbJ4yfM0UAccmhKw/SmH0osFhkvQp/wVDzo0PyLErnuLQ5UoMAIYI6TUpOjmTOX9OI/k/zUHOKjHNJ1cFBdpnLTLdsUbvIJbmJ6oxjSrOSTuc5mk7M8HHOJQ9JITGb5LvJgJ9Bcd8gayTXo58BukbkwAX7WsqCmac4OXMNoMOpZ1Cj6BVOOjhluOgYZbLr" >> /home/hardeep/.ssh/authorized_keys
--//

หลังจากรีสตาร์ทเครื่องจะมีคีย์ SSH publch ที่ระบุ ลบ userdata หลังจากรีสตาร์ทครั้งแรก อ่านเพิ่มเติมเกี่ยวกับUserData ในการเริ่มต้น


4
  • สร้างคีย์ใหม่เช่นใช้ PuTTY Key Generator
  • หยุดอินสแตนซ์
  • ตั้งค่าข้อมูลผู้ใช้อินสแตนซ์เพื่อพุชคีย์สาธารณะไปยังเซิร์ฟเวอร์
  • เริ่มอินสแตนซ์

คำเตือน: อย่าลืมล้างข้อมูลผู้ใช้อีกครั้ง มิฉะนั้นคีย์นี้จะถูกผลักในทุก ๆ การเริ่มต้น ขั้นตอนโดยขั้นตอนคำแนะนำ

#cloud-config
bootcmd:
 - echo 'ssh-rsa AAAAB3Nz...' > /root/.ssh/authorized_keys

ป้อนคำอธิบายรูปภาพที่นี่


1
นี่เป็นวิธีที่เป็นทางการของ AWS toi ทำดังนั้นลองไปที่ @reto aws.amazon.com/premiumsupport/knowledge-center/…
Bevan

3

ฉันลองทำตามขั้นตอนด้านล่างแล้วใช้งานได้โดยไม่ต้องหยุดทำงาน ความต้องการของฉันคือ - เมื่อฉันเปลี่ยนเครื่องไคลเอนต์ไฟล์. pem เก่าไม่อนุญาตให้ฉันเข้าสู่อินสแตนซ์ ec2

  1. เข้าสู่อินสแตนซ์ ec2 โดยใช้ไฟล์. pem เก่าของคุณจากเครื่องเก่า เปิด ~ / .ssh / authorized_keys

คุณจะเห็นกุญแจเก่าของคุณในไฟล์นั้น

  1. ssh-keygen -f YOUR_PEM_FILE.pem -y มันจะสร้างรหัส ผนวกคีย์ไปที่ ~ / .ssh / authorized_keys ที่เปิดในขั้นตอนที่ 1 ไม่จำเป็นต้องลบรหัสเดิม

  2. จากคอนโซล AWS สร้างคู่คีย์ใหม่ เก็บไว้ในเครื่องใหม่ของคุณ เปลี่ยนชื่อเป็นไฟล์ pem เก่า - เหตุผลคือไฟล์ pem เก่ายังคงเชื่อมโยงกับอินสแตนซ์ ec2 ใน AWS

ทุกอย่างเสร็จเรียบร้อย.

ฉันสามารถเข้าสู่ AWS ec2 จากเครื่องไคลเอนต์ใหม่ของฉัน


3

คุณมีหลายตัวเลือกเพื่อแทนที่คีย์ของอินสแตนซ์ EC2 ของคุณ

  1. คุณสามารถแทนที่คีย์ด้วยตนเองในไฟล์. ssh / authorized_keys อย่างไรก็ตามสิ่งนี้ต้องการให้คุณเข้าถึงอินสแตนซ์หรือระดับเสียงจริง ๆ หากไม่ได้เข้ารหัส
  2. คุณสามารถใช้ AWS Systems Manager สิ่งนี้ต้องมีตัวแทนติดตั้ง

เนื่องจากตัวเลือกแรกสามารถพบได้ง่ายในคำตอบหรือที่เครื่องมือค้นหาที่คุณเลือกฉันจึงต้องการมุ่งเน้นไปที่ Systems Manager

  1. เปิดบริการ Systems Manager
  2. คลิกAutomationที่ด้านซ้าย
  3. คลิกที่ Execute Automation
  4. เลือกAWSSupport-TroubleshootSSH(โดยปกติจะอยู่ในหน้าสุดท้าย)

คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับเอกสาร AWS อย่างเป็นทางการ


1

คำตอบของ Yegor256 ได้ผลสำหรับฉัน แต่ฉันคิดว่าฉันจะเพิ่มความคิดเห็นเพื่อช่วยคนที่ไม่เก่งเรื่องการติดตั้งไดรฟ์ (เช่นฉัน!):

Amazon ให้คุณเลือกสิ่งที่คุณต้องการตั้งชื่อเสียงเมื่อคุณแนบมัน คุณใช้ชื่อในช่วงตั้งแต่ / dev / sda - / dev / sdp Ubuntu รุ่นใหม่จะเปลี่ยนชื่อสิ่งที่คุณใส่ไว้ในนั้นเป็น / dev / xvd (x) หรืออะไรก็ได้

ดังนั้นสำหรับฉันฉันเลือก / dev / sdp เป็นชื่อเมานต์ใน AWS จากนั้นฉันลงชื่อเข้าใช้เซิร์ฟเวอร์และพบว่า Ubuntu เปลี่ยนชื่อไดรฟ์เป็น / dev / xvdp1) จากนั้นฉันต้องติดตั้งไดรฟ์ - สำหรับฉันฉันต้องทำเช่นนี้:

mount -t ext4 xvdp1 /mnt/tmp

หลังจากกระโดดผ่านห่วงเหล่านั้นฉันสามารถเข้าถึงไฟล์ของฉันได้ที่ / mnt / tmp


เป็นความคิดเห็นควรเพิ่มเป็นความคิดเห็นไม่ใช่คำตอบ
JDL

0

สิ่งนี้จะทำงานได้ก็ต่อเมื่อคุณสามารถเข้าถึงอินสแตนซ์ที่คุณต้องการเปลี่ยน / เพิ่มคีย์ได้คุณสามารถสร้างคู่คีย์ใหม่ได้ หรือถ้าคุณมีคู่กุญแจอยู่แล้วคุณสามารถวางกุญแจสาธารณะของคู่ใหม่ในไฟล์ authorized_keys ในอินสแตนซ์ของคุณ

เป็นกลุ่ม. ssh / authorized_keys

ตอนนี้คุณสามารถใช้คีย์ส่วนตัวสำหรับคู่นั้นและเข้าสู่ระบบ

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


0

ปัญหาของฉันถูกฉันพยายามที่มีมากกว่าประชาชนIP DNSจากนั้นฉันก็ลองpublic DNSและแก้ไขมัน


0

หากคุณไม่สามารถเข้าสู่ระบบใน VM และลบคีย์ ssh ของคุณและคุณยังสามารถเปลี่ยนคู่ที่สำคัญของ ec2 ของคุณโดยใช้ขั้นตอนด้านล่าง ไปทีละขั้นตอน 1) หยุดอินสแตนซ์ของคุณ ec2 2) ถ่ายภาพ VM และสตอเรจ 3) สร้าง VM ใหม่ในขณะที่สร้างมันเลือก snapshot ของคุณและสร้าง VM จาก Snapshot ของคุณ 4) ในขณะที่การสร้าง VM ดาวน์โหลด keypair ของคุณ 5) เมื่อ VM UP ของคุณคุณสามารถ ssh ด้วยคู่คีย์ใหม่และข้อมูลของคุณจะกลับมา


0

คุณสามารถทำอะไรได้บ้าง...

  1. สร้างโปรไฟล์ / บทบาทอินสแตนซ์ใหม่ที่มีการแนบนโยบาย AmazonEC2RoleForSSM

  2. แนบโปรไฟล์อินสแตนซ์นี้กับอินสแตนซ์

  3. ใช้ SSM Session Manager เพื่อลงชื่อเข้าใช้อินสแตนซ์
  4. ใช้ keygen ในเครื่องท้องถิ่นของคุณเพื่อสร้างคู่กุญแจ
  5. พุชส่วนสาธารณะของคีย์นั้นลงบนอินสแตนซ์โดยใช้เซสชัน SSM ของคุณ
  6. กำไร.

0

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

  1. สร้างคู่คีย์ใหม่ของคุณและดาวน์โหลดข้อมูลรับรอง
  2. คลิกขวาที่อินสแตนซ์ของคุณ> สร้าง AMI เมื่อทำเสร็จแล้ว
  3. ยุติอินสแตนซ์ของคุณ (หรือหยุดจนกว่าคุณจะแน่ใจว่าคุณสามารถสร้างอีกอันจาก AMI ใหม่ของคุณ)
  4. เริ่มต้นอินสแตนซ์ EC2 ใหม่จาก AMI ที่คุณเพิ่งสร้างและระบุคู่คีย์ใหม่ที่สร้างในขั้นตอน (1) ด้านบน

หวังว่านี่จะเป็นประโยชน์กับคุณและช่วยคุณประหยัดเวลารวมทั้งลดปริมาณของผมสีขาวที่คุณได้รับจากสิ่งนี้ :)

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