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公開鍵でssh-keygen
のOpenSSHバージョンを実行して、リモートマシンのSSH2で必要な形式に変換します。これは、OpenSSHを実行しているシステムで実行する必要があります。
$ ssh-keygen -e -f ~/.ssh/id_dsa.pub > ~/.ssh/id_dsa_ssh2.pub
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
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