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 形式に変換するために行われることを読みました。
対応する秘密鍵の形式も変更する必要があるということですか?
から始まるので、
秘密鍵の開始