OpenSSH kann keine PKCS # 12-Dateien sofort verwenden. Wie andere vorgeschlagen haben, müssen Sie den privaten Schlüssel im PEM-Format extrahieren, der Sie aus dem Land von OpenSSL nach OpenSSH bringt. Andere hier erwähnte Lösungen funktionieren bei mir nicht. Ich verwende OS X 10.9 Mavericks (derzeit 10.9.3) mit vorgefertigten Dienstprogrammen (OpenSSL 0.9.8y, OpenSSH 6.2p2).
Extrahieren Sie zunächst einen privaten Schlüssel im PEM-Format, der direkt von OpenSSH verwendet wird:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa > ~/.ssh/id_rsa
Ich empfehle dringend, den privaten Schlüssel mit einem Passwort zu verschlüsseln:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa -passout 'pass:Passw0rd!' > ~/.ssh/id_rsa
Natürlich ist das Schreiben eines Klartextkennworts in der Befehlszeile auch nicht sicher. Sie sollten daher den letzten Befehl aus dem Verlauf löschen oder nur sicherstellen, dass er nicht dort ankommt. Unterschiedliche Muscheln haben unterschiedliche Möglichkeiten. Sie können Ihrem Befehl Leerzeichen voranstellen, um zu verhindern, dass er in Bash und vielen anderen Shells im Verlauf gespeichert wird. So löschen Sie den Befehl auch aus dem Verlauf in Bash:
history -d $(history | tail -n 2 | awk 'NR == 1 { print $1 }')
Alternativ können Sie OpenSSL auf andere Weise ein Kennwort für einen privaten Schlüssel übergeben. Informationen zu Passphrasenargumenten finden Sie in der OpenSSL-Dokumentation .
Erstellen Sie dann einen öffentlichen OpenSSH-Schlüssel, der der Datei "authorized_keys" hinzugefügt werden kann:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub