OpenSSH ne peut pas utiliser les fichiers PKCS # 12 prêts à l'emploi. Comme d'autres l'ont suggéré, vous devez extraire la clé privée au format PEM qui vous fait passer du pays d'OpenSSL à OpenSSH. Les autres solutions mentionnées ici ne fonctionnent pas pour moi. J'utilise OS X 10.9 Mavericks (10.9.3 pour le moment) avec des utilitaires «préemballés» (OpenSSL 0.9.8y, OpenSSH 6.2p2).
Tout d'abord, extrayez une clé privée au format PEM qui sera utilisée directement par OpenSSH:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa > ~/.ssh/id_rsa
Je suggère fortement de crypter la clé privée avec un mot de passe:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa -passout 'pass:Passw0rd!' > ~/.ssh/id_rsa
De toute évidence, l'écriture d'un mot de passe en texte brut sur la ligne de commande n'est pas non plus sûre, vous devez donc supprimer la dernière commande de l'historique ou simplement vous assurer qu'elle n'y arrive pas. Différents obus ont des manières différentes. Vous pouvez préfixer votre commande avec de l'espace pour l'empêcher d'être enregistrée dans l'historique dans Bash et de nombreux autres shells. Voici également comment supprimer la commande de l'historique dans Bash:
history -d $(history | tail -n 2 | awk 'NR == 1 { print $1 }')
Alternativement, vous pouvez utiliser une manière différente de passer un mot de passe de clé privée à OpenSSL - consultez la documentation OpenSSL pour les arguments de phrase de passe .
Ensuite, créez une clé publique OpenSSH qui peut être ajoutée au fichier authorized_keys:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub