正しいプライベートキーを使用しても、WindowsパスワードはAWS EC2で復号化されません


21

ローカルマシンから公開鍵をアップロードして作成したキーペアを使用して、AWS EC2に新しいWindowsインスタンスを作成しました。

インスタンスは正常に起動しましたが、パスワードは復号化されません。報告する:

秘密鍵は「----- BEGIN RSA PRIVATE KEY -----」で始まり、「----- END RSA PRIVATE KEY -----」で終わる必要があります

正しいキーをアップロードしたと確信しています。指紋がAWSが使用する奇妙な指紋形式と一致することを確認しました。しかし、それは解読されません。

キーファイルをアップロードして、フォームに貼り付けようとしました。

最終的に、末尾の改行を削除していないことがわかり、キーの空白行を削除しました。ただし、[パスワードの暗号化解除]をクリックすると、新しいエラーが発生します。

パスワードの解読中にエラーが発生しました。 秘密鍵を正しく入力したことを確認してください。

回答:


22

AWS EC2のキー管理は、パスワードが設定された(暗号化された)SSHプライベートキーに対応していません。これは検出されず、単に情報のないエラーで失敗します。

プライベートキーが暗号化されてディスクに保存されている場合(IMOのように)、AWSのコンソールに貼り付けるには、暗号化を解除する必要があります。

それを行うのではなく、パスワードをローカルで復号化することを検討してください。そのため、AWSにプライベートキーを送信する必要はありません。起動後、またはget-password-dataまたは対応するAPI要求を使用して、サーバーログから暗号化されたパスワードデータ(base64エンコード)を取得します。

次に、結果をbase64でデコードおよび解読できます。

base64 -d /tmp/file | openssl rsautl -decrypt -inkey /path/to/aws/private/key.pem

(OpenSSH秘密鍵はによって受け入れられますopenssl rsautl)。

便利なエラーでパスワードで保護されたキーを処理できないという問題もec2-get-passwordコマンドに影響ます。

こちらもご覧ください:


1
ありがとう。ここに、あなたの提案に従って、私が使用する完全なコマンドラインを示しますaws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key}aws-clijqを使用します )。
ベンバトラーコール

base64では文句を言う-dので、-D私のために動作します。OS Xのim
Saad Masood

2
OS Xでは、そのパイプにもう1つのコマンドを追加aws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key} | pbcopy します。これは、パスワードをクリップボードに直接送信します。
マークマグラナ16

1
これは正解として表示される必要があります。他の回答はこれに比べて少し安全ではないので
webofmars

4

jqを使用しなくても、これは可能ですが、返されたデータをさらに解析する必要があります。

aws ec2 get-password-data "--instance-id=${instance_id}" --query 'PasswordData' | sed 's/\"\\r\\n//' | sed 's/\\r\\n\"//' | base64 -D | openssl rsautl -inkey ${my_key} -decrypt

うまくいきました。WSLUbuntuでは、でbase64 -dなくを使用する必要がありました-D
セスストーン

3

これはmacOSで私のために働いたものです:

openssl rsa -in $HOME/.ssh/aws-remote -out /Users/home/desktop/unencrypted-rsa.txt

.pemファイルがパスワードで暗号化されているかどうかを次の行で確認できることに注意してください。存在する場合は、Amazonで使用する前に復号化する必要があります。

Proc-Type: 4,ENCRYPTED

私にとっては解決策でした。AWS UIは、キーがパスフレーズで保護されていることを検出しないため、事前に復号化する必要があります。ただし、これは一種の安全ではありません。そのため、復号化されたファイルを後で削除します。
webofmars

2

私のMacでは、base64のコマンドライン引数が異なります。

これは私のために働いた:

base64 -D -i /tmp/file | openssl rsautl -decrypt -inkey /path/to/key.pem

-1
  1. ec2ダッシュボードに移動
  2. 既存のキーを削除します
  3. 新しいキーペアを作成する
  4. 名前を選ぶ
  5. ダウンロードしてローカルに保管する
  6. インスタンスを起動し、Windowsインスタンスのコピーをダウンロードします
  7. 手順4で使用した名前で新しいキーペアに名前を付けます
  8. この新しく生成されたキーを使用してパスワードを復号化する

これは動作します


1
はい、動作します。しかし、それはまた、ある種の点を見逃しています-ローカルキーをアップロードする場合を説明しています。
クレイグリンガー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.