OpenSSH बॉक्स से बाहर PKCS # 12 फ़ाइलों का उपयोग नहीं कर सकता। जैसा कि दूसरों ने सुझाव दिया है, आपको पीईएम प्रारूप में निजी कुंजी को निकालना होगा जो आपको ओपनएसएसएल की ओपनएसएसएच की भूमि से मिलती है। यहां वर्णित अन्य समाधान मेरे लिए काम नहीं करते हैं। मैं "प्रीपेड" उपयोगिताओं (OpenSSL 0.9.8y, OpenSSH 6.2p2) के साथ OS X 10.9 Mavericks (10.9.3 इस समय) का उपयोग करता हूं।
सबसे पहले, PEM प्रारूप में एक निजी कुंजी निकालें जो सीधे OpenSSH द्वारा उपयोग की जाएगी:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa > ~/.ssh/id_rsa
मैं पासवर्ड के साथ निजी कुंजी को एन्क्रिप्ट करने का दृढ़ता से सुझाव देता हूं:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa -passout 'pass:Passw0rd!' > ~/.ssh/id_rsa
जाहिर है, कमांड-लाइन पर एक सादा-पाठ पासवर्ड लिखना सुरक्षित नहीं है, इसलिए आपको इतिहास से अंतिम कमांड हटाना चाहिए या बस यह सुनिश्चित करना चाहिए कि यह वहां नहीं मिलता है। अलग-अलग गोले के अलग-अलग तरीके होते हैं। आप इसे बैश और कई अन्य गोले में इतिहास को सहेजने से रोकने के लिए अपने कमांड को अंतरिक्ष के साथ उपसर्ग कर सकते हैं। यहाँ यह भी बताया गया है कि Bash में इतिहास से कमांड कैसे हटाएं:
history -d $(history | tail -n 2 | awk 'NR == 1 { print $1 }')
वैकल्पिक रूप से, आप ओपनएसएसएल के लिए एक निजी कुंजी पासवर्ड पास करने के लिए अलग-अलग तरीके का उपयोग कर सकते हैं - पास वाक्यांश तर्क के लिए ओपनएसएसएल प्रलेखन से परामर्श करें ।
फिर, एक OpenSSH सार्वजनिक कुंजी बनाएं जिसे अधिकृत_की फ़ाइल में जोड़ा जा सकता है:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub