OpenSSH ne peut pas utiliser les fichiers PKCS#12 par défaut. Comme d'autres l'ont suggéré, vous devez extraire la clé privée au format PEM, ce qui vous permet de passer du domaine d'OpenSSL à OpenSSH. Les autres solutions mentionnées ici ne fonctionnent pas pour moi. J'utilise OS X 10.9 Mavericks (10.9.3 en ce moment) avec des utilitaires "prépackagé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
Évidemment, écrire un mot de passe en clair sur la ligne de commande n'est pas sûr non plus, vous devez donc supprimer la dernière commande de l'historique ou vous assurer qu'elle n'y arrive pas. Les différents shells ont des méthodes différentes. Vous pouvez préfixer votre commande par un espace pour éviter qu'elle ne soit enregistrée dans l'historique dans Bash et dans 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 autre méthode pour passer un mot de passe de clé privée à OpenSSL - consulter 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