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