OpenSSH no puede usar archivos PKCS # 12 listos para usar. Como otros sugirieron, debe extraer la clave privada en formato PEM que lo lleva de la tierra de OpenSSL a OpenSSH. Otras soluciones mencionadas aquí no funcionan para mí. Uso OS X 10.9 Mavericks (10.9.3 en este momento) con utilidades "preempaquetadas" (OpenSSL 0.9.8y, OpenSSH 6.2p2).
Primero, extraiga una clave privada en formato PEM que OpenSSH utilizará directamente:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa > ~/.ssh/id_rsa
Sugiero encriptar la clave privada con contraseña:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa -passout 'pass:Passw0rd!' > ~/.ssh/id_rsa
Obviamente, escribir una contraseña de texto sin formato en la línea de comandos tampoco es seguro, por lo que debe eliminar el último comando del historial o simplemente asegurarse de que no llegue allí. Las diferentes conchas tienen diferentes formas. Puede anteponer su comando con espacio para evitar que se guarde en el historial en Bash y muchos otros shells. Aquí también se explica cómo eliminar el comando del historial en Bash:
history -d $(history | tail -n 2 | awk 'NR == 1 { print $1 }')
Alternativamente, puede usar una forma diferente de pasar una contraseña de clave privada a OpenSSL; consulte la documentación de OpenSSL para ver los argumentos de las frases de paso .
Luego, cree una clave pública OpenSSH que se pueda agregar al archivo autorizado_claves:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub