OpenSSH ไม่สามารถใช้ไฟล์ PKCS # 12 ได้ ตามที่คนอื่นแนะนำคุณต้องแยกคีย์ส่วนตัวในรูปแบบ PEM ซึ่งทำให้คุณได้รับจากดินแดนของ OpenSSL ไปยัง OpenSSH โซลูชันอื่น ๆ ที่กล่าวถึงในที่นี้ไม่ได้ผลสำหรับฉัน ฉันใช้ OS X 10.9 Mavericks (10.9.3 ในขณะนี้) ด้วยยูทิลิตี้“ prepackaged” (OpenSSL 0.9.8y, OpenSSH 6.2p2)
ขั้นแรกให้แยกคีย์ส่วนตัวในรูปแบบ PEM ซึ่งจะใช้โดยตรงโดย OpenSSH:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa > ~/.ssh/id_rsa
ฉันขอแนะนำให้เข้ารหัสคีย์ส่วนตัวด้วยรหัสผ่าน:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa -passout 'pass:Passw0rd!' > ~/.ssh/id_rsa
เห็นได้ชัดว่าการเขียนรหัสผ่านข้อความธรรมดาบนบรรทัดคำสั่งไม่ปลอดภัยเช่นกันดังนั้นคุณควรลบคำสั่งสุดท้ายออกจากประวัติหรือเพียงตรวจสอบให้แน่ใจว่ามันไม่ได้ไปที่นั่น กระสุนที่แตกต่างกันมีวิธีที่แตกต่างกัน คุณสามารถใส่คำสั่งล่วงหน้าด้วยช่องว่างเพื่อป้องกันไม่ให้คำสั่งบันทึกลงในประวัติใน Bash และเชลล์อื่น ๆ นี่คือวิธีการลบคำสั่งจากประวัติใน Bash:
history -d $(history | tail -n 2 | awk 'NR == 1 { print $1 }')
หรือคุณสามารถใช้วิธีอื่นในการส่งรหัสผ่านไพรเวตคีย์ไปยัง OpenSSL - ศึกษาเอกสารประกอบ OpenSSL เพื่อหาข้อโต้แย้งวลีวลีรหัสผ่านสำหรับอาร์กิวเมนต์วลีรหัสผ่าน
จากนั้นสร้างคีย์สาธารณะ OpenSSH ซึ่งสามารถเพิ่มลงในไฟล์ authorized_keys:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub