OpenSSH निजी कुंजी को SSH2 निजी कुंजी में बदलें


29

क्या OpenSSH कुंजियों की मौजूदा जोड़ी को SSH2 (ssh.com प्रारूप) कीज़ की जोड़ी में बदलने का कोई तरीका है?

UPD : चूंकि ssh-keygenअचानक प्रकट होने के बारे में कुछ उत्तर हैं , मैं समझाता हूं कि मैं कहां से आया हूं (यह "आपने कोशिश की है?" पर एक अच्छा जवाब होगा)।

$> diff --report-identical-files <(ssh-keygen -e -f ~/.ssh/id_dsa) <(ssh-keygen -e -f ~/.ssh/id_dsa.pub)
Files /tmp/zshAGGWAK and /tmp/zshPZiIr6 are identical

दूसरे शब्दों में, ssh-keygenनिजी और सार्वजनिक इनपुट कुंजियों के लिए एक ही कुंजी देता है (मूल फाइलों की हैश स्पष्ट रूप से अलग हैं, मैंने दो बार उन्हें यह सुनिश्चित करने के लिए चेक किया है कि वे वैध निजी और सार्वजनिक कुंजी हैं)। ऐसा लगता है कि ssh-keygenनिजी या सार्वजनिक इनपुट कुंजी के लिए केवल सार्वजनिक कुंजी उत्पन्न करता है।

मैं यह गलत कर रहा हूं या यह एक सामान्य व्यवहार है?

जवाबों:


43

इस ट्यूटोरियल का शीर्षक: SSH: OpenSSH को SSH2 में कनवर्ट करें और vise versa प्रस्तुत करता है जो आप खोज रहे हैं।

OpenSSH कुंजी को SSH2 कुंजी में बदलें

ssh-keygenदूरस्थ मशीन पर SSH2 द्वारा आवश्यक प्रारूप में परिवर्तित करने के लिए अपनी OpenSSH सार्वजनिक कुंजी पर OpenSSH संस्करण चलाएँ । यह ओपनएसएसएच चलाने वाले सिस्टम पर किया जाना चाहिए।

$ ssh-keygen -e -f ~/.ssh/id_dsa.pub > ~/.ssh/id_dsa_ssh2.pub

SSH2 कुंजी को OpenSSH कुंजी में बदलें

OpenSSH ssh-keygenद्वारा आवश्यक स्वरूप में परिवर्तित करने के लिए अपनी ssh2 सार्वजनिक कुंजी पर OpenSSH संस्करण चलाएँ । यह OpenSSH चलाने वाले सिस्टम पर किए जाने की आवश्यकता है।

$ ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > ~/.ssh/id_dsa_1024_a_openssh.pub

ट्यूटोरियल यह दिखाने के लिए जाता है कि दोनों विभिन्न प्रकार की कुंजी कैसे उत्पन्न करते हैं और उन्हें अन्य प्रारूपों में कैसे निर्यात करें।

निजी और सार्वजनिक कुंजी के लिए इसका उपयोग करें?

मैन पेज के मुताबिक, इसका जवाब हां में होगा। ssh-keygenइसके लिए मैन पेज -eदेखना स्विच के लिए निम्नलिखित बताता है :

 -e    This option will read a private or public OpenSSH key file and print
       the key in RFC 4716 SSH Public Key File Format to stdout.  This option
       allows exporting keys for use by several commercial SSH implementations.

लेकिन व्यवहार में यह प्रतीत होता है कि ssh-keygenनिजी चाबियाँ, केवल सार्वजनिक लोगों को परिवर्तित नहीं कर सकती हैं।

उदाहरण के लिए:

# Make a new RSA key-pair
$ ssh-keygen -t rsa -f newkey

# attempt to extract the private key
$ ssh-keygen -e -f newkey > newkey_e

# attempt to extract the public key
$ ssh-keygen -e -f newkey.pub > newkey.pub_e

# Notice the supposed extracted private key (newkey_e) and the corresponding extracted public key (newkey.pub_e) have identical `md5sum`'s.
$ for i in *;do md5sum $i;done
d1bd1c12c4a2b9fee4b5f8f83150cf1a  newkey
8b67a7be646918afc7a041119e863be5  newkey_e
13947789d5dcc5322768bd8a2d3f562a  newkey.pub
8b67a7be646918afc7a041119e863be5  newkey.pub_e

परिणामी कुंजियों को देखते हुए इसकी पुष्टि की जाती है:

$ grep BEGIN newkey_e newkey.pub_e 
newkey_e:---- BEGIN SSH2 PUBLIC KEY ----
newkey.pub_e:---- BEGIN SSH2 PUBLIC KEY ----

थोडा गुगली करते हुए मैं एक लेख के शीर्षक से इस ब्लर्ब पर आया: आप ओपनएसएसएच निजी कुंजी फाइलों को एसएसएच में कैसे परिवर्तित करते हैं । यह साइट ऊपर-नीचे होती दिख रही थी लेकिन इस पृष्ठ के लिए Google के कैश में देखने पर मुझे निम्नलिखित ब्लर्ब मिला:

आप OpenSSH निजी कुंजी फ़ाइलों को SSH.com निजी कुंजी फ़ाइलों में कैसे परिवर्तित करते हैं?

यह ssh-keygen प्रोग्राम द्वारा नहीं किया जा सकता है, भले ही अधिकांश मैन पेज यह कहते हैं। वे इसे हतोत्साहित करते हैं ताकि आप कई सार्वजनिक कुंजियों का उपयोग करेंगे। एकमात्र समस्या यह है कि आरसीएफ आपको एक से अधिक सार्वजनिक कुंजी पंजीकृत करने की अनुमति नहीं देगा।

यह लेख PuTTY के puttygen टूल के उपयोग के माध्यम से एकshsh.com निजी कुंजी को ssh.com निजी कुंजी में परिवर्तित करने के लिए एक विधि को कवर करने के लिए जाता है । नोट: puttygen विंडोज और लिनक्स से चलाया जा सकता है।

'पुट्टीजेन' खोलें और 2048 बिट आरएसए सार्वजनिक / निजी कुंजी जोड़ी बनाएं। सुनिश्चित करें कि आप जनरेट होने के बाद एक पासवर्ड जोड़ें। सार्वजनिक कुंजी को "puttystyle.pub" के रूप में सहेजें और निजी कुंजी को "puttystyle" के रूप में सहेजें। पोटीन प्रोग्राम और SSH.com प्रोग्राम एक साझा सार्वजनिक-कुंजी प्रारूप साझा करते हैं लेकिन पोटीन कार्यक्रम और OpenSSH के अलग-अलग सार्वजनिक-कुंजी प्रारूप हैं। हम इस पर वापस आएंगे, बाद में। आपको पुट्टी कार्यक्रम में दोनों पुट्टीज़ कीज़ को लोड करने में सक्षम होना चाहिए। हालांकि, पोटीन और SSH.com के लिए निजी कुंजी प्रारूप समान नहीं हैं और इसलिए आपको परिवर्तित फ़ाइल बनानी होगी। रूपांतरण मेनू पर जाएं और SSH.com कुंजी निर्यात करें। इसे "sshstyle" के रूप में सहेजें। अब रूपांतरण मेनू पर वापस जाएं और खुलने वाली कुंजी निर्यात करें। इसे "ओपनश" के रूप में सहेजें। ये नाम मनमाने हैं और आप अपना खुद का चयन कर सकते हैं। आपको बाद में ओपनएसएसएच मशीन पर स्थापना के लिए नामों को बदलना होगा। निचे देखो।

ऊपर दिए गए कार्यों को देखते हुए मैंने निम्नलिखित प्रयोग किया puttygen, हमारे पहले से निर्मित निजी / सार्वजनिक ओपनशीश की-जोड़ी का उपयोग करके:

# generate ssh.com private key from private openssh key
$ puttygen newkey -O private-sshcom -o newkey.puttygen-sshcom

# generate ssh.com public key from private openssh key
$ puttygen newkey -O public -o newkey.pub_puttygen-sshcom

# generate openssh public key from private openssh key (for confirmation)
$ puttygen newkey -O public-openssh -o newkey.pub_puttygen-openssh

टिप्पणी अलग है इसलिए आप केवल परिणामी फ़ाइलों की तुलना नहीं कर सकते हैं, इसलिए यदि आप कुंजियों की पहली कुछ पंक्तियों को देखते हैं, तो यह एक बहुत अच्छा संकेतक है कि उपरोक्त कमांड सफल थे।

सार्वजनिक ssh.com कुंजियों की तुलना:

$ tail -n +3 newkey.pub_e | head -1 | cut -c 1-60
AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wb

$ tail -n +3 newkey.pub_puttygen-sshcom | head -1 | cut -c 1-60
AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wb

सार्वजनिक ओपनश कीज़ की तुलना:

$ cut -c 1-100 newkey.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wbz9x/w6I2DmSZVI9TJa6M9jgGE952QsOY

$ cut -c 1-100 newkey.pub_puttygen-openssh 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wbz9x/w6I2DmSZVI9TJa6M9jgGE952QsOY

3
और निजी कुंजी बदलने के बारे में क्या ?
ДМИТРИЙ МАЛИКОВ

@ ДМИТРИЙМАЛИКОВ - वह बात क्यों होगी? मैंने इसकी कोशिश की और यह निजी या सार्वजनिक कुंजी के लिए काम करने लगता है।
स्लम

1
सुनिश्चित नहीं है कि यह मेरे लिए वैध निजी कुंजी देता है $> a="$(ssh-keygen -e -f ~/.ssh/id_rsa)m"; b="$(ssh-keygen -e -f ~/.ssh/id_rsa.pub)m"; md5sum <<< $a; md5sum <<< $b ce615aa3e39e274d0bd81064399cedf8 - ce615aa3e39e274d0bd81064399cedf8 -:। मूल फ़ाइलों के डैश अलग हैं, obv। ऐसा लगता है कि यह निजी या सार्वजनिक इनपुट कुंजी के लिए सार्वजनिक कुंजी देता है।
ДМИТРИЙ МАЛИКОВ

@ ДМИТРИЙМАЛИКОВ - उत्तर के लिए मेरे अपडेट देखें। आप सही हैं कि ssh-keygenसार्वजनिक कुंजी वापस दे रहे हैं । मैंने अतिरिक्त शोध पर आधारित एक विधि पर काम किया है। LMK अगर यह स्वीकार्य है।
स्लम

1
puttygen विशेषताओं मुश्किल हो सकता है: puttygen <OpenSSH_priv_key> -O public -o id_rsa_ssh2_puttygen{.pub}(उत्पादन -Oके लिए खड़ा है- प्रकार और उत्पादन के -oलिए फ़ाइल )। यह एक OpenSSH 7.0 उत्पन्न rsh 2048 बिट्स निजी कुंजी से ssh2 निजी और सार्वजनिक कुंजी उत्पन्न करता है। Win Phone 7.5 क्लाइंट पर काम नहीं कर रहा है (* Tommi Pirttiniemi द्वारा SSH क्लाइंट)। लेकिन वैसे भी एक महान जवाब के लिए @ ДМИТРИЙМАЛИКОВ और @ एसएलएम को धन्यवाद। @ ओटस पुट्टीजेन puttyआर्क पर आता है ।
tuk0z

1

ssh-keygenपीएम प्रारूप में एक निजी कुंजी निर्यात नहीं करेगा, लेकिन यह एक मौजूदा ओपनशीश निजी कुंजी को पीईएम प्रारूप में बदल देगा, जो मूल को अधिलेखित कर देगा। आपको बस पासवर्ड को एडिट करना है।

आपकी ~/.ssh/id_rsaफ़ाइल को OpenSSH प्रारूप से SSH2 (pem) प्रारूप में बदलने की आज्ञा है:

ssh-keygen -p -f ~/.ssh/id_rsa -m pem

फिर प्रांप्ट पर पुराने (पुराने) और नए पासफ़्रेज़ की आपूर्ति करें। वे समान हो सकते हैं, या यहां तक ​​कि दोनों रिक्त हो सकते हैं। या आप उन्हें -P(पुराने पासफ़्रेज़) और -N(नए पासफ़्रेज़) विकल्पों का उपयोग करके कमांड-लाइन पर आपूर्ति कर सकते हैं । उदाहरण के लिए, यदि पासफ़्रेज़ रिक्त है, और आप इसे इस तरह रखना चाहते हैं:

ssh-keygen -p -P '' -N ''-f ~/.ssh/id_rsa -m pem
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.