OpenSSH秘密鍵をSSH2秘密鍵に変換

OpenSSH秘密鍵をSSH2秘密鍵に変換

既存の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秘密鍵と公開鍵の鍵を入力すると、同じ鍵が返されます(元のファイルのハッシュは明らかに異なります。有効な秘密鍵と公開鍵であることを確認するために2回確認しました)。ssh-keygen公開鍵は、個人用または公開用の入力鍵に対してのみ生成されるようです。

私が何か間違っているのでしょうか、それともこれが正常な行動ですか?

ベストアンサー1

このチュートリアルのタイトルは次のとおりです。SSH:OpenSSHをSSH2にまたはその逆に変換するあなたが探しているものを提供しているようです。

OpenSSHキーをSSH2キーに変換

ssh-keygenOpenSSH公開鍵でOpenSSHバージョンを実行して、リモートシステムのSSH2に必要な形式に変換します。これはOpenSSHを実行しているシステムで実行する必要があります。

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

SSH2キーをOpenSSHキーに変換

ssh-keygenssh2 公開鍵で OpenSSH バージョンを実行し、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に変換する方法。サイトは上下に見えますが、中をのぞいてください。このページのGoogleキャッシュ次の紹介を見つけました。

OpenSSH秘密鍵ファイルをSSH.com秘密鍵ファイルに変換するには?

ssh-keygenプログラムはこれを行うことはできませんが、ほとんどのマニュアルページではこれを行うことができます。彼らはそれをお勧めしないので、いくつかの公開鍵を使用します。唯一の問題は、RCFが複数の公開鍵を登録することを許可しないことです。

この記事では、次のコマンドを使用してopenssh秘密鍵をssh.com秘密鍵に変換する方法について説明します。パテの puttygenツール。メモ: puttygenWindowsとLinuxで実行できます。

"puttygen"を開き、2048ビットrsa公開/秘密鍵ペアを生成します。パスワードを作成したら、必ず追加してください。公開鍵を「puttystyle.pub」として保存し、秘密鍵を「puttystyle」として保存します。 puttyプログラムとSSH.comプログラムは共通の公開鍵形式を共有しますが、puttyプログラムとOpenSSHは公開鍵形式が異なります。これについては後で再度取り上げます。パテプログラムに両方のパテスタイルキーをロードできる必要があります。ただし、puttyとSSH.comの秘密鍵形式が異なるため、変換されたファイルを生成する必要があります。変換メニューに移動してSSH.comキーをエクスポートします。 「sshstyle」として保存してください。次に、変換メニューに戻ってopensshキーをエクスポートします。 「openssh」として保存してください。この名前は任意であるため、直接選択できます。後でコンピュータでOpenSSHインストール名を変更する必要があります。下記をご覧ください。

上記に基づいて、以前puttygenに作成したプライベート/パブリックopensshキーペアを使用して、次の結果を得ました。

# 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

openssh公開鍵の比較:

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

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

おすすめ記事