web-dev-qa-db-ja.com

sshキーペアから.pemファイルを取得する方法

Ssh-keygenを使用して鍵ペアを作成し、2つの古典的なid_rsaとid_rsa.pubを取得しました。

公開鍵をAWS EC2アカウントにインポートしました。

次に、Windowsインスタンスを作成し、そのインスタンスパスワードを復号化するために、AWSコンソールから.pemファイルを要求されます。 2つのid_rsaおよびid_rsa.pubファイルから.pemファイルを取得するにはどうすればよいですか?

40
canciobello

this によると、このコマンドを使用できます。

ssh-keygen -f id_rsa -e -m pem

これにより、publicキーがOpenSSL互換の形式に変換されます。 privateキーはすでにPEM形式であり、そのまま使用できます(Michael Hamptonが述べたとおり)。

AWSがPEM形式の(X.509)証明書を要求していないかどうかを再確認します。これは、SSHキーとは異なります。

53
fuero

ssh-keygenを使用して.pem形式でキーをエクスポートすると、うまくいきました。

ssh-keygen -f id_rsa.pub -m 'PEM' -e > id_rsa.pem

次に、必要に応じて.pemキーをコピーします。

参考のために:

  • -f id_rsa.pub部分は、読み取り元の入力ファイルを示します
  • -m 'PEMはPEMファイルタイプを示します
  • -eオプションは、出力がエクスポートされることを示します
27
Matt

id_rsaは、Windows EC2インスタンスのパスワードを復号化するために使用する必要があるファイルですが、コピーして貼り付けるファイルは、フレーズで保護されていないことを確認してください。

一時的に保護されていないid_rsaファイルを取得する問題を次のように解決しました:

$ openssl rsa -in ~/.ssh/id_rsa -out tmp_file.pem
5
canciobello

最初は、ssh-keygen、AWS EC2と互換性のある公開キーを生成できましたが、互換性のある秘密キーの作成に問題がありました。以下は、AWS EC2と互換性のある公開鍵と秘密鍵のペアを作成します。

ssh-keygen -P "" -t rsa -b 4096 -m pem -f my-key-pair

各パラメータの情報は次のとおりです。

  • -P:パスフレーズです。意図的に空に設定します。
  • -t:作成するキーのタイプを指定します。 AWS EC2キーペアにはRSAが必要です。これは、作成された公開鍵に関係することが私の経験です。
  • -b:キーのビット数を指定します。サポートされる長さは、1024、2048、および4096です。EC2インスタンス接続APIを使用しているときにSSHを使用して接続する場合、サポートされる長さは2048および4096です。
  • -m:キー生成用のキー形式を指定します。サポートされている秘密鍵タイプを生成するときに「PEM」の形式を設定すると、鍵はレガシーPEM秘密鍵形式で保存されます。 AWS EC2キーペアにはレガシーフォーマットが必要です
  • -f:キーファイルの出力ファイル名を指定します

リソース:

Ssh-keygenの詳細については、次を参照してください。 https://man.openbsd.org/ssh-keygen.1

AWS-EC2キーペア- https://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html

EC2インスタンスを起動するとき、それにキーペア(またはなし)を割り当てます。後で変更することはできません。

そのキーペアの.pemファイルのみを使用して、Windowsパスワードを復号化できます。

.pemファイルは、キーペアの作成時にダウンロードされています。あなたはそれを再び得ることはできません。失ったら運が悪い。

インスタンスを起動してインスタンスに割り当てる前にそのキーをAWSにインポートしない限り、自分で生成した.pemファイルを使用することはできません。

簡単に言うと、元の.pemファイルがない場合、パスワードを取得できません。

編集:質問をもう一度読んだ後、OPが彼のキーをAWSにインポートしたことに気付きました。

0
Matt Houser