OpenSSH не може використовувати файли PKCS # 12 поза коробкою. Як запропонували інші, ви повинні витягнути приватний ключ у форматі PEM, який доставить вас із землі OpenSSL до OpenSSH. Інші рішення, згадані тут, не працюють для мене. Я використовую OS X 10.9 Mavericks (10.9.3 на даний момент) з "попередньо упакованими" утилітами (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, який можна додати до файлу санкціонованих ключів:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub