OpenSSH tidak dapat menggunakan file PKCS # 12 di luar kotak. Seperti yang disarankan orang lain, Anda harus mengekstrak kunci pribadi dalam format PEM yang membawa Anda dari tanah OpenSSL ke OpenSSH. Solusi lain yang disebutkan di sini tidak bekerja untuk saya. Saya menggunakan OS X 10.9 Mavericks (10.9.3 saat ini) dengan utilitas "prepackaged" (OpenSSL 0.9.8y, OpenSSH 6.2p2).
Pertama, ekstrak kunci pribadi dalam format PEM yang akan digunakan langsung oleh OpenSSH:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa > ~/.ssh/id_rsa
Saya sangat menyarankan untuk mengenkripsi kunci pribadi dengan kata sandi:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa -passout 'pass:Passw0rd!' > ~/.ssh/id_rsa
Jelas, menulis kata sandi teks biasa pada command-line juga tidak aman, jadi Anda harus menghapus perintah terakhir dari histori atau hanya memastikannya tidak sampai di sana. Kerang yang berbeda memiliki cara yang berbeda pula. Anda bisa mengawali perintah Anda dengan ruang untuk mencegahnya disimpan ke histori di Bash dan banyak shell lainnya. Berikut ini juga cara menghapus perintah dari histori di Bash:
history -d $(history | tail -n 2 | awk 'NR == 1 { print $1 }')
Atau, Anda dapat menggunakan cara berbeda untuk mengirimkan kata sandi kunci pribadi ke OpenSSL - lihat dokumentasi OpenSSL untuk argumen frasa sandi .
Kemudian, buat kunci publik OpenSSH yang dapat ditambahkan ke file Authorized_key:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub