OpenSSH non può usare i file PKCS # 12 per impostazione predefinita. Come altri hanno suggerito, è necessario estrarre la chiave privata in formato PEM che ti porta dalla terra di OpenSSL a OpenSSH. Altre soluzioni menzionate qui non funzionano per me. Uso OS X 10.9 Mavericks (al momento 10.9.3) con utility "preconfezionate" (OpenSSL 0.9.8y, OpenSSH 6.2p2).
Innanzitutto, estrarre una chiave privata in formato PEM che verrà utilizzata direttamente da OpenSSH:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa > ~/.ssh/id_rsa
Consiglio vivamente di crittografare la chiave privata con password:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa -passout 'pass:Passw0rd!' > ~/.ssh/id_rsa
Ovviamente, anche scrivere una password in chiaro sulla riga di comando non è sicuro, quindi dovresti eliminare l'ultimo comando dalla cronologia o semplicemente assicurarti che non ci arrivi. Conchiglie diverse hanno modi diversi. È possibile aggiungere un prefisso al comando con spazio per impedire che venga salvato nella cronologia in Bash e in molte altre shell. Ecco anche come eliminare il comando dalla cronologia in Bash:
history -d $(history | tail -n 2 | awk 'NR == 1 { print $1 }')
In alternativa, è possibile utilizzare un modo diverso per passare una password della chiave privata a OpenSSL: consultare la documentazione di OpenSSL per argomenti relativi a passphrase .
Quindi, crea una chiave pubblica OpenSSH che può essere aggiunta al file authorized_keys:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub