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, который можно добавить в файл author_keys:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub