OpenSSH không thể sử dụng các tệp PKCS # 12 trong hộp. Như những người khác đã đề xuất, bạn phải trích xuất khóa riêng ở định dạng PEM đưa bạn từ vùng đất của OpenSSL sang OpenSSH. Các giải pháp khác được đề cập ở đây không làm việc cho tôi. Tôi sử dụng OS X 10.9 Mavericks (10.9.3 vào lúc này) với các tiện ích đã được đóng gói sẵn của Google (OpenSSL 0.9.8y, OpenSSH 6.2p2).
Đầu tiên, trích xuất một khóa riêng ở định dạng PEM sẽ được OpenSSH sử dụng trực tiếp:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa > ~/.ssh/id_rsa
Tôi thực sự khuyên bạn nên mã hóa khóa riêng bằng mật khẩu:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa -passout 'pass:Passw0rd!' > ~/.ssh/id_rsa
Rõ ràng, viết mật khẩu văn bản đơn giản trên dòng lệnh cũng không an toàn, vì vậy bạn nên xóa lệnh cuối cùng khỏi lịch sử hoặc chỉ cần đảm bảo rằng nó không đạt được điều đó. Vỏ khác nhau có cách khác nhau. Bạn có thể tiền tố lệnh của bạn với không gian để ngăn không cho nó được lưu vào lịch sử trong Bash và nhiều shell khác. Đây cũng là cách xóa lệnh khỏi lịch sử trong Bash:
history -d $(history | tail -n 2 | awk 'NR == 1 { print $1 }')
Ngoài ra, bạn có thể sử dụng một cách khác nhau để chuyển mật khẩu khóa riêng cho OpenSSL - tham khảo tài liệu OpenSSL để biết các đối số cụm từ .
Sau đó, tạo khóa công khai OpenSSH có thể được thêm vào tệp ủy quyền:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub