web-dev-qa-db-ja.com

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は、プライベートまたはパブリック入力キーのパブリックキーのみを生成するようです。

私はそれを間違っていますか、それとも正常な動作ですか?

このチュートリアルのタイトル: SSH:OpenSSHからSSH2への変換とその逆 は、探しているものを提供しているようです。

OpenSSHキーをSSH2キーに変換する

OpenSSH公開鍵でssh-keygenのOpenSSHバージョンを実行して、リモートマシンのSSH2で必要な形式に変換します。これは、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 ----

OpenSSHプライベートキーファイルをSSH に変換するにはどうすればよいですか?サイトはアップダウンしているように見えますが、このページの Googleのキャッシュを調べています 次の文が見つかりました。

OpenSSH秘密鍵ファイルをSSH.com秘密鍵ファイルに変換するにはどうすればよいですか?

Ssh-keygenプログラムは、ほとんどのmanページでそれが可能であると言っていても、それを実行できません。複数の公開鍵を使用することをお勧めします。唯一の問題は、RCFでは複数の公開鍵を登録できないことです。

この記事では、 PuTTY'sputtygenツールを使用してopenssh秘密鍵をssh.com秘密鍵に変換する方法について説明します。 注:puttygenはWindowsおよびLinuxから実行できます。

「puttygen」を開き、2048ビットのRSA公開/秘密鍵ペアを生成します。生成されたパスワードは必ず追加してください。公開鍵を「puttystyle.pub」として保存し、秘密鍵を「puttystyle」として保存します。 PuTTYプログラムとSSH.comプログラムは共通の公開鍵形式を共有しますが、PuTTYプログラムとOpenSSHは異なる公開鍵形式を持っています。後でこれに戻ります。 PuTTYプログラムに両方のputtystyleキーをロードできるはずです。ただし、PuTTYとSSH.comの秘密鍵の形式は同じではないため、変換されたファイルを作成する必要があります。変換メニューに移動し、SSH.comキーをエクスポートします。 「sshstyle」という名前で保存します。次に、変換メニューに戻り、opensshキーをエクスポートします。 「openssh」として保存します。これらの名前は任意であり、独自の名前を選択できます。後でOpenSSHマシンにインストールするための名前を変更する必要があります。下記参照。

上記を前提として、以前に生成したプライベート/パブリックのopensshキーペアを使用して、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

Openssh公開鍵の比較:

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

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

ssh-keygenは、秘密鍵をpem形式でエクスポートしませんが、既存のopenssh秘密鍵をpem形式に変換して、元の鍵を上書きします。パスワードを編集するだけです。

~/.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
3
user43957