วิธีรับไฟล์. pem จากคู่คีย์ ssh


33

ฉันสร้างคู่คีย์โดยใช้ ssh-keygen และรับ clasic สอง id_rsa และ id_rsa.pub

ฉันนำเข้ากุญแจสาธารณะไปยังบัญชี AWS EC2 ของฉัน

ตอนนี้ฉันสร้างอินสแตนซ์ของ windows และถอดรหัสรหัสผ่านของอินสแตนซ์นั้นคอนโซล AWS จะขอไฟล์. pem จากฉัน ฉันจะรับไฟล์. pem จากสองไฟล์ id_rsa และ id_rsa.pub ของฉันได้อย่างไร


2
รหัสส่วนตัวอยู่ในรูปแบบ PEM แล้วและสามารถใช้ได้ตามที่เป็นอยู่
Michael Hampton

@MichaelHampton สิ่งนี้จะขึ้นอยู่กับรุ่นของ ssh-keygen และคำสั่งที่ใช้ในการสร้างคู่ของคีย์ บางรุ่นใช้ RFC4716 โดยค่าเริ่มต้นแทน PEM
ชาวออสเตรีย

คำตอบ:


44

ตามนี้คำสั่งนี้สามารถนำมาใช้:

ssh-keygen -f id_rsa -e -m pem

สิ่งนี้จะแปลงกุญแจสาธารณะของคุณเป็นรูปแบบที่รองรับ OpenSSL รหัสส่วนตัวของคุณอยู่ในรูปแบบ PEM แล้วและสามารถใช้ได้ตามที่เป็นอยู่ (ตามที่ระบุไว้ใน Michael Hampton)

ตรวจสอบอีกครั้งถ้า AWS ไม่ได้ขอ (X.509) ใบรับรองในรูปแบบ PEM ซึ่งจะเป็นสิ่งที่แตกต่างจากกุญแจ SSH ของคุณ


แต่พวกเขาไม่ต้องการรหัสสาธารณะใช่ไหม พวกเขาต้องการรหัสส่วนตัวสำหรับถอดรหัสรหัสผ่านจากคอนโซล AWS
Michael Bailey

ฉันไม่รู้ว่า OP ต้องการสิ่งนี้สำหรับอะไร
fuero

ไม่แน่ใจว่าคุณคุ้นเคยกับ AWS อย่างไร แต่เมื่อคุณหมุนตัวอย่างหน้าต่าง (เซิร์ฟเวอร์โดยทั่วไป) AWS จะเก็บรหัสผ่านจากคุณจนกว่าคุณจะให้รหัสส่วนตัวของคุณแก่พวกเขา จากนั้นพวกเขาจะให้รหัสผ่านเซิร์ฟเวอร์แก่คุณ ด้วยเหตุนี้เซิร์ฟเวอร์ Windows และ Linux บน AWS จึงขึ้นอยู่กับคีย์ส่วนตัว
Michael Bailey

1
นี้ไม่ได้ทำงานบน OS X (SSH -v ==> OpenSSH_6.2p2)
chrish

3
ในทางตรงกันข้ามกับเอกสารมันจะเอาท์พุทคีย์สาธารณะในรูปแบบ PEM ไม่ใช่คีย์ส่วนตัว ปัจจุบัน ssh-keygen ไม่รองรับการแปลงคีย์ส่วนตัว
morgwai

21

การใช้ssh-keygenเพื่อส่งออกคีย์ในรูปแบบ. pem ใช้ได้สำหรับฉัน

ssh-keygen -f id_rsa.pub -m 'PEM' -e > id_rsa.pem

จากนั้นก็คัดลอก .pemรหัสตามที่จำเป็น

สำหรับการอ้างอิง:

  • -f id_rsa.pubส่วนบ่งชี้แฟ้มใส่อ่านจาก
  • -m 'PEM บ่งชี้ชนิดไฟล์ PEM
  • -eตัวเลือกที่แสดงให้เห็นว่าการส่งออกจะถูกส่งออก

5

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

ฉันแก้ไขปัญหาในการรับid_rsaไฟล์ที่ไม่มีการป้องกันชั่วคราวด้วยสิ่งที่ชอบ:

$ openssl rsa -in ~/.ssh/id_rsa -out tmp_file.pem

2

ตอนแรกเมื่อใช้ssh-keygenฉันสามารถสร้างกุญแจสาธารณะที่เข้ากันได้กับ AWS EC2 แต่มีปัญหากับการสร้างคีย์ส่วนตัวที่เข้ากันได้ ต่อไปนี้สร้างคู่ของคีย์สาธารณะและส่วนตัวที่เข้ากันได้กับ AWS EC2

ssh-keygen -P "" -t rsa -b 4096 -m pem -f my-key-pair

นี่คือข้อมูลเกี่ยวกับแต่ละพารามิเตอร์:

  • -P: สำหรับวลีรหัสผ่าน ตั้งใจตั้งค่าว่างเปล่า
  • -t: ระบุประเภทของคีย์ที่จะสร้าง AWS EC2 Key Pair ต้องการ RSA เป็นประสบการณ์ของฉันที่สิ่งนี้เกี่ยวข้องกับรหัสสาธารณะที่สร้างขึ้น
  • -b: ระบุจำนวนบิตในคีย์ ความยาวที่รองรับคือ 1024, 2048 และ 4096 หากคุณเชื่อมต่อโดยใช้ SSH ในขณะที่ใช้ EC2 Instance Connect API ความยาวที่รองรับคือ 2048 และ 4096
  • -m: ระบุรูปแบบคีย์สำหรับการสร้างคีย์ การตั้งค่ารูปแบบของ“ PEM” เมื่อสร้างประเภทคีย์ส่วนตัวที่รองรับจะทำให้คีย์นั้นถูกเก็บไว้ในรูปแบบคีย์ส่วนตัว PEM ดั้งเดิม การจับคู่คีย์ AWS EC2 ต้องการรูปแบบดั้งเดิม
  • -f: ระบุชื่อไฟล์ที่ส่งออกของไฟล์คีย์

แหล่งข้อมูล:

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ ssh-keygen โปรดดู:  https://man.openbsd.org/ssh-keygen.1

AWS - คู่กุญแจ EC2 -  https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html


Mike เลือกที่จะไม่รวมเอกสารสำหรับตัวเลือก '-b' บางทีอาจเห็นได้ชัดสำหรับบางคนนั่นหมายถึง "การเข้ารหัส 4096 บิตโปรด" ตามที่ระบุในเอกสาร AWS ที่เชื่อมโยง "ความยาวที่รองรับคือ 1024, 2048 และ 4096 หากคุณเชื่อมต่อโดยใช้ SSH ในขณะที่ใช้ EC2 Instance Connect API ความยาวที่รองรับคือ 2048 และ 4096"
nclark

@ nclard ไม่แน่ใจว่าทำไมฉันถึงทิ้งพารามิเตอร์ -b นั้น เพิ่งเพิ่มเข้าไป
Mike Barlow - BarDev

0

เมื่อคุณเปิดใช้งานอินสแตนซ์ EC2 คุณได้กำหนดคู่ของคีย์ (หรือไม่มี) ให้กับมัน ไม่สามารถเปลี่ยนแปลงได้ในภายหลัง

เฉพาะการใช้ไฟล์. pem จากคู่คีย์นั้นคุณจะสามารถถอดรหัสรหัสผ่าน Windows ได้

ไฟล์. pem จะถูกดาวน์โหลดเมื่อสร้างคู่กุญแจ คุณไม่สามารถรับมันได้อีก หากคุณทำมันหายแสดงว่าคุณไม่มีโชค

คุณไม่สามารถใช้ไฟล์. pem ที่คุณสร้างขึ้นเองได้เว้นแต่คุณจะนำเข้ากุญแจนั้นไปยัง AWS ก่อนที่อินสแตนซ์จะถูกเปิดใช้งานและกำหนดให้กับอินสแตนซ์

หากคุณไม่มีไฟล์. pem ดั้งเดิมคุณจะไม่สามารถรับรหัสผ่านได้

แก้ไข: หลังจากอ่านคำถามอีกครั้งฉันรู้ว่า OP ได้นำเข้ากุญแจของเขาไปยัง AWS

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