既存の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秘密鍵ファイルにどのように変換しますか?
ほとんどのmanページで
できると言われていても、ssh-keygenプログラムでは実行できません。複数の公開キーを使用するように、彼らはそれを思いとどまらせます。
唯一の問題は、RCFでは
複数の公開鍵を登録できないことです。
この記事では、PuTTYのputtygen
を使用して、openssh秘密鍵をssh.com秘密鍵に変換する方法について説明します。 道具。 注: puttygen
WindowsとLinuxから実行できます。
「puttygen」を開き、2048ビットのrsa公開鍵と秘密鍵のペアを生成します。
生成後にパスワードを追加してください。公開鍵を「puttystyle.pub」として保存し、秘密鍵を「puttystyle」として保存します。
パテプログラムとSSH.comプログラムは共通の公開鍵形式を共有します
が、パテプログラムとOpenSSHは異なる公開鍵形式を持っています。
後でこれに戻ります。両方の
パテスタイルキーをパテプログラムにロードできるはずです。ただし、パテと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
コメントが異なるため、結果のファイルを比較することはできません。したがって、キーの最初の数行を見ると、上記のコマンドが成功したことを示す非常に良い指標です。
関連:Ubuntu – LXCゲストの外部IPアドレスを構成する方法は?公開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