OpenSSH nie może używać plików PKCS # 12 po wyjęciu z pudełka. Jak sugerowali inni, musisz wyodrębnić klucz prywatny w formacie PEM, który przeniesie Cię z krainy OpenSSL do OpenSSH. Inne wymienione tutaj rozwiązania nie działają dla mnie. Używam OS X 10.9 Mavericks (obecnie 10.9.3) z narzędziami „paczkowanymi” (OpenSSL 0.9.8y, OpenSSH 6.2p2).
Najpierw wyodrębnij klucz prywatny w formacie PEM, który będzie używany bezpośrednio przez OpenSSH:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa > ~/.ssh/id_rsa
Zdecydowanie sugeruję zaszyfrowanie klucza prywatnego hasłem:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa -passout 'pass:Passw0rd!' > ~/.ssh/id_rsa
Oczywiście pisanie hasła w postaci zwykłego tekstu w wierszu poleceń również nie jest bezpieczne, dlatego należy usunąć ostatnie polecenie z historii lub po prostu upewnić się, że go nie dostanie. Różne muszle mają różne sposoby. Możesz poprzedzić swoje polecenie spacją, aby zapobiec zapisaniu go w historii w Bash i wielu innych powłokach. Oto także, jak usunąć polecenie z historii w Bash:
history -d $(history | tail -n 2 | awk 'NR == 1 { print $1 }')
Alternatywnie możesz użyć innego sposobu, aby przekazać hasło klucza prywatnego do OpenSSL - zapoznaj się z dokumentacją OpenSSL, aby uzyskać argumenty wyrażenia hasła .
Następnie utwórz klucz publiczny OpenSSH, który można dodać do pliku uprawnionych kluczy:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub