web-dev-qa-db-ja.com

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

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

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

Private key must begin with "-----BEGIN RSA PRIVATE KEY-----" and end with "-----END RSA PRIVATE KEY-----"

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

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

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

There was an error decrypting your password. Please ensure that you have entered your private key correctly.

22
Craig Ringer

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)。

有用なエラーでパスワード保護されたキーの処理に失敗するという問題も the ec2-get-passwordコマンド

以下も参照してください。

23
Craig Ringer

これは私のためにmacOSでうまくいったものです:

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

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

Proc-Type: 4,ENCRYPTED
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
4
Ben

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

これは私のために働きました:

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

これはうまくいく

0
Arun Mohan