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


33

ssh-keygenを使用してキーペアを作成し、2つの古典的なid_rsaとid_rsa.pubを取得します。

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

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


2
秘密鍵はすでにPEM形式であり、そのまま使用できます。
マイケルハンプトン

@MichaelHampton、これはssh-keygenのバージョンとキーペアの生成に使用されるコマンドに依存します。一部のバージョンでは、PEMの代わりにデフォルトでRFC4716を使用します。
オーストラリアの

回答:


44

よると、この、このコマンドを使用することができます:

ssh-keygen -f id_rsa -e -m pem

これにより、公開鍵がOpenSSL互換の形式に変換されます。あなたのプライベート鍵は、PEM形式で既にあると(マイケル・ハンプトンが述べたように)であるとして使用することができます。

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


しかし、彼らは公開鍵を必要としませんか?AWSコンソールからパスワードを復号化するには秘密鍵が必要です
Michael Bailey

OPがこれを必要とする理由がわかりません。
-fuero

AWSにどれだけ慣れているかはわかりませんが、Windowsインスタンス(基本的にサーバー)をスピンアップすると、AWSはプライベートキーを与えるまでパスワードを保持します。次に、サーバーのパスワードを提供します。これにより、AWS上のWindowsサーバーとLinuxサーバーの両方がプライベートキーに依存します。
マイケルベイリー

1
これはOS Xでは機能しません(ssh -v ==> OpenSSH_6.2p2)
chrish

3
ドキュメントとは異なり、秘密キーではなくPEM形式でPUBLICキーを出力します。現在、ssh-keygenは秘密鍵の変換をサポートしていません。
モルグワイ

21

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

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

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

参考のために:

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

5

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

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

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

2

当初、を使用する場合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


マイクは、「-b」オプションのドキュメントを含めないことを選択しました。一部の人にとってはおそらく明らかなことですが、これは「4096ビット暗号化をお願いします」という意味です。リンクされたAWSドキュメントに記載されているように、「サポートされている長さは1024、2048、および4096です。EC2インスタンス接続APIの使用中にSSHを使用して接続する場合、サポートされる長さは2048および4096です。」
nclark

@nclard、なぜ-bパラメータを省略したのかわかりません。ちょうどそれを追加しました。
マイクバーロウ-BarDev

0

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

そのキーペアの.pemファイルのみを使用すると、Windowsパスワードを解読できます。

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

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

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

編集:質問を読み直した後、OPが彼のキーをAWSにインポートしたことに気付きました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.