以下を使用して公開/秘密鍵ペアを作成しました。
ssh-keygen -t rsa -b 2048 -v
次に、.pemファイルが必要で、次の手順に従ってください。https://serverfault.com/questions/706336/how-to-get-a-pem-file-from-ssh-key-pair
ssh-keygen -f id_rsa -e -m pem
-----BEGIN RSA PUBLIC KEY-----
それからこれを見つけました。https://gist.github.com/mingfang/4aba327add0807fa5e7f
openssl rsa -in ~/.ssh/id_rsa -outform pem
-----BEGIN RSA PRIVATE KEY-----
出力が異なる理由は何ですか?
答え1
OpenSSHは関数を呼び出してPEM_write_RSAPublicKey(stdout, k->rsa)
公開鍵データをエクスポートしますが、OpenSSLは指定された秘密鍵で機能します。 OpenSSHを使用すると、ほとんどの状況は公開鍵を一部の外部サーバーで利用可能な形式に変換しますが、秘密鍵はクライアントシステムで非公開に保たれるため、OpenSSHの公開鍵で作業するのは合理的です。キーペア。 OpenSSLを使用すると、「公開鍵を他のSSHサーバーに適した形式に変換する」という問題がなく、コードを秘密鍵で直接操作できます。異なるコード、異なる意図、異なる結果。do_convert_to_pem
ssh-keygen.c
答え2
このコマンドの場合、秘密鍵の代わりに公開鍵を出力するにはopenssl rsa
このフラグが必要です。-pubout
これをRSA公開鍵として出力するには(このようにssh-keygen -e
)、次の-RSAPublicKey_out
フラグを代わりに使用します。
openssl rsa -in id_rsa -outform PEM -RSAPublicKey_out
-----BEGIN RSA PUBLIC KEY-----
これは同じ出力を提供します
ssh-keygen -e -f id_rsa -m pem
-----BEGIN RSA PUBLIC KEY-----
このコマンドは、キーを生成する元のコマンドに対応するフラグが含まれている場合openssl
にのみ機能します。ssh-keygen
-m PKCS8