ssh-keygen ไม่ได้สร้างคีย์ส่วนตัว RSA


71

ฉันกำลังพยายามสร้างรหัสส่วนตัวและมีปัญหา

เมื่อฉันใช้ssh-keygen -t rsa -b 4096 -C "your_email@example.com"ฉันได้รับรหัสส่วนตัวในรูปแบบต่อไปนี้

-----BEGIN OPENSSH PRIVATE KEY-----
uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END OPENSSH PRIVATE KEY-----

และนี่ไม่ได้รับการยอมรับสำหรับแอปพลิเคชันที่ฉันพยายามใช้

ฉันคาดว่าจะมีรหัสในรูปแบบ RSA ต่อไปนี้

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,25737CC2C70BFABADB1B4598BD8AB9E9

uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END RSA PRIVATE KEY-----

ฉันจะสร้างรูปแบบที่ถูกต้องได้อย่างไร นี่เป็นเรื่องแปลกเพราะแม็คอื่นที่ฉันสร้างขึ้นนั้นถูกต้องทุกรูปแบบยกเว้นอันที่ฉันมีปัญหา

ฉันใช้งาน Mac OS Mojave ที่เพิ่งติดตั้งใหม่


และแม็คอื่น ๆ ไม่ได้อยู่ในโมฮาวี? ฉันอยู่ในโมฮาวีเช่นกันและรับรูปแบบคีย์ openssh "ใหม่" ดังนั้นฉันคิดว่า Mac อื่น ๆ อยู่ในรุ่นที่ต่ำกว่า ตรวจสอบเวอร์ชั่น OpenSSL ที่ใช้
Zina

@Zina เครื่อง Mac อื่น ๆ ก็มีใน Mojave และมีรุ่น OpenSSL เหมือนกัน
ดวงจันทร์

RSA ควรเป็นชนิดเริ่มต้น เกิดอะไรขึ้นถ้าคุณไม่ใช้-t rsaตัวเลือกทั้งหมด?
guzzijason

@guzzijason มันเหมือนกัน นั่นคือสิ่งที่ทำให้ฉันบ้า แม้ว่าฉันจะละเว้น -t rsa บน mac ของฉัน (ใช้งานได้) แต่ก็สร้าง RSA ได้อย่างถูกต้อง
ดวงจันทร์

ฉันมีปัญหาเดียวกัน วิธีแก้ปัญหาฉันใช้ openssh เวอร์ชันเก่ากว่าเพื่อสร้างคีย์ คุณสามารถทดสอบว่าคีย์ที่สร้างขึ้นของคุณถูกต้องด้วย openssl rsa -text -in key_file -passin 'pass: passphrase' หรือไม่ เวอร์ชั่น 7.4p1-16 ใช้งานได้
atype

คำตอบ:


76

ฉันประสบปัญหาเดียวกันเมื่อเร็ว ๆ นี้ (หลังจากอัปเกรดเป็นโมฮาวี 10.14.1) ต่อไปนี้เป็นวิธีแก้ปัญหาที่เป็นไปได้ 2 ประการสำหรับปัญหานี้

  • ลดระดับไบนารี ssh-keygen ของคุณ (คุณสามารถรับรุ่นเก่าได้อย่างง่ายดายจากภาพ linux / docker ใด ๆ )

หรือ

  • เพิ่มตัวเลือก-m PEMลงในคำสั่ง ssh-keygen ของคุณ ตัวอย่างเช่นคุณสามารถเรียกใช้ssh-keygen -m PEM -t rsa -b 4096 -C "your_email@example.com"เพื่อบังคับให้ ssh-keygen ส่งออกเป็นPEMรูปแบบ

ดูเหมือนว่าในเวอร์ชัน ssh-keygen ปัจจุบันในโมฮาวีรูปแบบการส่งออกเริ่มต้นRFC4716ดังกล่าวที่นี่


1
รูปแบบการส่งออกเริ่มต้นpublickeyแน่นอน rfc4716 แต่รูปแบบใน Q เป็นรูปแบบส่วนตัวภายในและเป็นรูปแบบ 'ใหม่' ของ OpenSSH ซึ่งไม่มีอยู่ในปี 1999 (!) และไม่มีการอธิบายไว้ในปัจจุบันอีกต่อไป ลอง 6.0 ถึง 6.3
dave_thompson_085

3
ฉันไม่สามารถแก้ไขคำตอบได้ แต่โปรดชัดเจนว่า 1. และ 2. เป็นคำตอบอิสระไม่ใช่ขั้นตอนต่อเนื่อง คุณไม่จำเป็นต้องปรับลดรุ่นสำหรับการสร้างคีย์แบบครั้งเดียว เพียงเพิ่ม-m PEM
sdoxsee

49

คีย์ใหม่ที่มีรูปแบบไพรเวตคีย์ OpenSSH สามารถแปลงได้โดยใช้ยูทิลิตี ssh-keygen เป็นรูปแบบ PEM แบบเก่า

ssh-keygen -p -m PEM -f ~/.ssh/id_rsa

ไม่จำเป็นต้องปรับลดรุ่นเป็น OpenSSH รุ่นเก่าเพียงเพื่อให้ได้ผลลัพธ์นี้


ใช่. อย่างที่ฉันพูดไปแล้วในความคิดเห็นเกี่ยวกับคำตอบที่ยอมรับ serverfault.com/questions/939909/…
sdoxsee

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

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