1

RSA 公開秘密鍵ペアの生成に使用される Python で記述されたコードを確認しています。

ただし、キーペアを生成しますが、コードの最後で ssh-keygen を再度実行します。なぜそれが行われるのかわかりません。そのため、RSA.generate() 自体がキーペアを生成し、それを 2 つの個別のファイルにエクスポートします。ssh-keygen を再度実行する必要があるのはなぜですか?

コードの数行を次に示します。

keypair = RSA.generate(1024, randfunc)

with open("pub", "w") as pubfile, open("id_rsa", "w") as privfile:
    privfile.write(keypair.exportKey())
    pubfile.write(keypair.publickey().exportKey())

system("ssh-keygen -m PKCS8 -i -f pub > id_rsa.pub && rm pub")

ファイルpubは公開鍵を格納し、 id_rsaは RSA.generate() 関数によって生成された鍵ペアからの秘密鍵を格納します。

では、なぜ最後に ssh-keygen コマンドを実行しているのでしょうか。

また、-i パラメーターには入力ファイルを使用せず、-f パラメーターは既に生成された公開鍵である pub という名前を使用します。

コードを実行すると、id_rsa と id_rsa.pub の 2 つのファイルが作成されます。

id_rsa は RSA.generate() を使用して生成された秘密鍵ですが、id_rsa.pub には ssh-keygen コマンドの結果が格納されます。

スクリプトの最後で ssh-keygen を呼び出す理由と、ssh-keygen に渡されるパラメーターを理解するための助けが必要です。-i には何らかの値を渡す必要があり、また -f には入力ではなく出力ファイル名を指定する必要があります。

注:これは、BEGIN PUBLIC KEY ではなく ssh-rsa で始まるように、ssh-keygen を使用して公開鍵を OpenSSL 形式から OpenSSH 形式に変換するために行われることを読みました。

対応する秘密鍵の形式も変更する必要があるということですか?

から始まるので、

秘密鍵の開始

4

1 に答える 1

0

生成された PEM 形式の公開鍵を OpenSSH 形式の公開鍵に変換するために ssh-keygen が実行されるという事実は正しいです。
私の知る限り、Python でこれを行う良い方法はありません。

OpenSSH 形式は、公開鍵に対してのみ存在します。
いいえ、秘密鍵が
-------- BEGIN PRIVATE KEY ---------またはで始まる場合は変換する必要はありません。-------- BEGIN RSA PRIVATE KEY ---------

于 2013-08-31T01:50:34.837 に答える