ฉันจะเปลี่ยนคู่กุญแจสำหรับอินสแตนซ์ ec2 ของฉันในคอนโซลการจัดการ AWS ได้อย่างไร ฉันสามารถหยุดอินสแตนซ์ฉันสามารถสร้างคู่คีย์ใหม่ แต่ฉันไม่เห็นลิงก์ใด ๆ เพื่อแก้ไขคู่คีย์ของอินสแตนซ์
ฉันจะเปลี่ยนคู่กุญแจสำหรับอินสแตนซ์ ec2 ของฉันในคอนโซลการจัดการ AWS ได้อย่างไร ฉันสามารถหยุดอินสแตนซ์ฉันสามารถสร้างคู่คีย์ใหม่ แต่ฉันไม่เห็นลิงก์ใด ๆ เพื่อแก้ไขคู่คีย์ของอินสแตนซ์
คำตอบ:
คำตอบนี้มีประโยชน์ในกรณีที่คุณไม่สามารถเข้าถึง SSH ไปยังเซิร์ฟเวอร์ที่มีอยู่ได้อีกต่อไป (เช่นคุณทำรหัสส่วนตัวหาย)
หากคุณยังคงมีการเข้าถึง SSH โปรดใช้หนึ่งในคำตอบด้านล่าง
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#replacing-lost-key-pair
นี่คือสิ่งที่ฉันทำขอบคุณโพสต์บล็อกของ Eric Hammond:
/dev/xvda1
โวลุ่มของมัน(เรียกมันว่าโวลุ่ม A) - ดูที่นี่/dev/xvdf
(หรือ/dev/sdf
)SSH ไปยังอินสแตนซ์ขนาดเล็กใหม่และเมานต์โวลุ่ม A ถึง /mnt/tmp
$ sudo mount / dev / xvdf1 / mnt / tmp
คัดลอก~/.ssh/authorized_keys
ไปยัง/mnt/tmp/home/ubuntu/.ssh/authorized_keys
/dev/xvda
.pem
ไฟล์ใหม่ของคุณแค่นั้นแหละ.
mkdir /mnt/tmp
จากนั้นmount /dev/xvdf /mnt/tmp
ควรทำเคล็ดลับสำหรับ # 5 และอย่าลืมขั้นตอนที่ 13 อาจเป็นrm ~/.ssh/known_hosts
ในกล่องที่คุณเชื่อมต่อ
.ssh/authorized_keys
ไฟล์ต้นฉบับ
เมื่อเริ่มต้นอินสแตนซ์แล้วจะไม่มีวิธีเปลี่ยน 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
สิ่งนี้จะใช้กับอินสแตนซ์ใหม่ที่คุณใช้เท่านั้น
.pem
ไฟล์กุญแจส่วนตัวบน Mac ของฉัน แต่ssh -i key.pem
ไม่ได้ตรวจสอบ (ปฏิเสธสิทธิ์) ในคอนโซลการจัดการ EC2 ภายใต้ชื่อคู่ที่สำคัญมันไม่มีรายการอะไรเลย นี่เป็นสิ่งที่น่าตกใจสำหรับฉัน ฉันจะตั้งค่านี้ได้อย่างไร ปรากฏขึ้นตาม Management Console ว่าไม่มีการกำหนดคู่กุญแจที่ฉันกำหนดค่าให้กับอินสแตนซ์!
เรียกใช้คำสั่งนี้หลังจากที่คุณดาวน์โหลด 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
คำแนะนำจากการสนับสนุน AWS EC2:
สิ่งนี้จะบันทึกไฟล์ authorized_keys ที่ได้รับการปรับปรุง
ตอนนี้ลองเปิดเซสชัน SSH ใหม่กับอินสแตนซ์ของคุณโดยใช้คีย์ pai ใหม่ของคุณ
เมื่อคุณยืนยันว่าคุณสามารถใช้ SSH ในอินสแตนซ์โดยใช้คู่คีย์ใหม่คุณสามารถ vi .ssh / authorized_key และลบคีย์เก่า
ตอบข้อสังเกต Shaggie:
หากคุณไม่สามารถเชื่อมต่อกับอินสแตนซ์ (เช่นคีย์เสียหาย) กว่าใช้คอนโซล AWS เพื่อแยกโวลุ่ม ( http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume.html) ) และใส่กลับเข้าไปในอินสแตนซ์ที่ใช้งานได้ดีกว่าเปลี่ยนคีย์บนโวลุ่มและใส่กลับไปเป็นอินสแตนซ์ก่อนหน้า
ฉันสังเกตเห็นว่าเมื่อจัดการโดย Elastic Beanstalk คุณสามารถเปลี่ยนคู่คีย์ EC2 ที่ใช้งานอยู่ของคุณ ภายใต้ Elastic Beanstalk> การกำหนดค่า> ความปลอดภัยเลือกคีย์ใหม่จากดร็อปดาวน์คู่คีย์ EC2 คุณจะเห็นข้อความนี้ถามว่าคุณแน่ใจหรือไม่:
EC2KeyName: การเปลี่ยนแปลงการตั้งค่าตัวเลือก EC2KeyName จะไม่มีผลทันที อินสแตนซ์ EC2 ที่มีอยู่ของคุณแต่ละรายการจะถูกแทนที่และการตั้งค่าใหม่ของคุณจะมีผล
อินสแตนซ์ของฉันสิ้นสุดลงแล้วเมื่อฉันทำสิ่งนี้ จากนั้นจึงเริ่มยกเลิกและเริ่มต้นอีกครั้ง เห็นได้ชัดว่า "การแทนที่" หมายถึงการยกเลิกและสร้างอินสแตนซ์ใหม่ หากคุณได้มีการปรับเปลี่ยนปริมาณการบูตของคุณสร้าง AMI แรกแล้วระบุว่า AMI ในเดียวกันยืดหยุ่นฝักถั่ว> การกำหนดค่า> อินสแตนซ์ในรูปแบบเป็นที่กำหนดเอง AMI ID สิ่งนี้ยังเตือนเกี่ยวกับการแทนที่อินสแตนซ์ EC2
หลังจากที่คุณแก้ไขคู่คีย์ EC2 และรหัส AMI ที่กำหนดเองและหลังจากเห็นคำเตือนเกี่ยวกับทั้งคู่แล้วให้คลิกบันทึกเพื่อดำเนินการต่อ
โปรดจำไว้ว่าที่อยู่ IP จะเปลี่ยนแปลงเมื่ออินสแตนซ์ถูกสร้างขึ้นใหม่ดังนั้นคุณจะต้องดึงที่อยู่ IP ใหม่จากคอนโซล EC2 เพื่อใช้เมื่อเชื่อมต่อผ่าน SSH
ฉันใช้วิธีนี้และหลังจากนั้นไม่นานก็สามารถทำให้มันใช้ได้ การขาดคำสั่งจริงทำให้มันยาก แต่ฉันก็คิดออก HOWEVER - ค้นพบและทดสอบวิธีที่ง่ายกว่ามากหลังจาก:
หากปฏิบัติตามขั้นตอนด้านล่างจะช่วยประหยัดเวลาได้มากและไม่จำเป็นต้องหยุดการทำงานของอินสแตนซ์
อย่างนั้นแหละ. สนุก:)
ฉันเชื่อว่า aproach ที่ง่ายที่สุดคือ:
ในกรณีที่คุณใช้แพลตฟอร์ม ElasticBeanstalk คุณสามารถเปลี่ยนปุ่มได้โดยไปที่:
สิ่งนี้จะยุติอินสแตนซ์ปัจจุบันและสร้างใหม่ด้วยคีย์ / การตั้งค่าที่เลือก
มีสองสถานการณ์ที่ถามในคำถามนี้: -
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 ที่สร้างไว้ก่อนหน้านี้เนื่องจากวัตถุประสงค์ด้านความปลอดภัย
หวังว่ามันจะช่วย!
ทางออกที่ง่ายที่สุดคือการคัดลอกเนื้อหาของ
~/.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
~/.ssh/authorized_keys
เมื่อฉันไม่สามารถแม้แต่อินสแตนซ์ของ SSH aws ได้
คุณไม่จำเป็นต้องไปยังอุปกรณ์รากหมุนและเปลี่ยนคีย์สาธารณะ 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 ในการเริ่มต้น
คำเตือน: อย่าลืมล้างข้อมูลผู้ใช้อีกครั้ง มิฉะนั้นคีย์นี้จะถูกผลักในทุก ๆ การเริ่มต้น ขั้นตอนโดยขั้นตอนคำแนะนำ
#cloud-config
bootcmd:
- echo 'ssh-rsa AAAAB3Nz...' > /root/.ssh/authorized_keys
ฉันลองทำตามขั้นตอนด้านล่างแล้วใช้งานได้โดยไม่ต้องหยุดทำงาน ความต้องการของฉันคือ - เมื่อฉันเปลี่ยนเครื่องไคลเอนต์ไฟล์. pem เก่าไม่อนุญาตให้ฉันเข้าสู่อินสแตนซ์ ec2
คุณจะเห็นกุญแจเก่าของคุณในไฟล์นั้น
ssh-keygen -f YOUR_PEM_FILE.pem -y มันจะสร้างรหัส ผนวกคีย์ไปที่ ~ / .ssh / authorized_keys ที่เปิดในขั้นตอนที่ 1 ไม่จำเป็นต้องลบรหัสเดิม
จากคอนโซล AWS สร้างคู่คีย์ใหม่ เก็บไว้ในเครื่องใหม่ของคุณ เปลี่ยนชื่อเป็นไฟล์ pem เก่า - เหตุผลคือไฟล์ pem เก่ายังคงเชื่อมโยงกับอินสแตนซ์ ec2 ใน AWS
ทุกอย่างเสร็จเรียบร้อย.
ฉันสามารถเข้าสู่ AWS ec2 จากเครื่องไคลเอนต์ใหม่ของฉัน
คุณมีหลายตัวเลือกเพื่อแทนที่คีย์ของอินสแตนซ์ EC2 ของคุณ
เนื่องจากตัวเลือกแรกสามารถพบได้ง่ายในคำตอบหรือที่เครื่องมือค้นหาที่คุณเลือกฉันจึงต้องการมุ่งเน้นไปที่ Systems Manager
Systems Manager
Automation
ที่ด้านซ้ายExecute Automation
AWSSupport-TroubleshootSSH
(โดยปกติจะอยู่ในหน้าสุดท้าย)คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับเอกสาร AWS อย่างเป็นทางการ
คำตอบของ Yegor256 ได้ผลสำหรับฉัน แต่ฉันคิดว่าฉันจะเพิ่มความคิดเห็นเพื่อช่วยคนที่ไม่เก่งเรื่องการติดตั้งไดรฟ์ (เช่นฉัน!):
Amazon ให้คุณเลือกสิ่งที่คุณต้องการตั้งชื่อเสียงเมื่อคุณแนบมัน คุณใช้ชื่อในช่วงตั้งแต่ / dev / sda - / dev / sdp Ubuntu รุ่นใหม่จะเปลี่ยนชื่อสิ่งที่คุณใส่ไว้ในนั้นเป็น / dev / xvd (x) หรืออะไรก็ได้
ดังนั้นสำหรับฉันฉันเลือก / dev / sdp เป็นชื่อเมานต์ใน AWS จากนั้นฉันลงชื่อเข้าใช้เซิร์ฟเวอร์และพบว่า Ubuntu เปลี่ยนชื่อไดรฟ์เป็น / dev / xvdp1) จากนั้นฉันต้องติดตั้งไดรฟ์ - สำหรับฉันฉันต้องทำเช่นนี้:
mount -t ext4 xvdp1 /mnt/tmp
หลังจากกระโดดผ่านห่วงเหล่านั้นฉันสามารถเข้าถึงไฟล์ของฉันได้ที่ / mnt / tmp
สิ่งนี้จะทำงานได้ก็ต่อเมื่อคุณสามารถเข้าถึงอินสแตนซ์ที่คุณต้องการเปลี่ยน / เพิ่มคีย์ได้คุณสามารถสร้างคู่คีย์ใหม่ได้ หรือถ้าคุณมีคู่กุญแจอยู่แล้วคุณสามารถวางกุญแจสาธารณะของคู่ใหม่ในไฟล์ authorized_keys ในอินสแตนซ์ของคุณ
เป็นกลุ่ม. ssh / authorized_keys
ตอนนี้คุณสามารถใช้คีย์ส่วนตัวสำหรับคู่นั้นและเข้าสู่ระบบ
หวังว่านี่จะช่วยได้
ปัญหาของฉันถูกฉันพยายามที่มีมากกว่าประชาชนIP
DNS
จากนั้นฉันก็ลองpublic DNS
และแก้ไขมัน
หากคุณไม่สามารถเข้าสู่ระบบใน VM และลบคีย์ ssh ของคุณและคุณยังสามารถเปลี่ยนคู่ที่สำคัญของ ec2 ของคุณโดยใช้ขั้นตอนด้านล่าง ไปทีละขั้นตอน 1) หยุดอินสแตนซ์ของคุณ ec2 2) ถ่ายภาพ VM และสตอเรจ 3) สร้าง VM ใหม่ในขณะที่สร้างมันเลือก snapshot ของคุณและสร้าง VM จาก Snapshot ของคุณ 4) ในขณะที่การสร้าง VM ดาวน์โหลด keypair ของคุณ 5) เมื่อ VM UP ของคุณคุณสามารถ ssh ด้วยคู่คีย์ใหม่และข้อมูลของคุณจะกลับมา
คุณสามารถทำอะไรได้บ้าง...
สร้างโปรไฟล์ / บทบาทอินสแตนซ์ใหม่ที่มีการแนบนโยบาย AmazonEC2RoleForSSM
แนบโปรไฟล์อินสแตนซ์นี้กับอินสแตนซ์
ขอบคุณสำหรับเคล็ดลับพวก จะเก็บไว้ในใจเมื่อฉันต้องการพักคู่ที่สำคัญ อย่างไรก็ตามเพื่อประโยชน์ของความมีประสิทธิภาพและความขี้เกียจฉันได้พบสิ่งอื่น:
หวังว่านี่จะเป็นประโยชน์กับคุณและช่วยคุณประหยัดเวลารวมทั้งลดปริมาณของผมสีขาวที่คุณได้รับจากสิ่งนี้ :)