ローカルマシンから公開鍵をアップロードして作成したキーペアを使用して、AWS EC2に新しいWindowsインスタンスを作成しました。
インスタンスは正常に起動しましたが、パスワードを復号化しません。それは報告します:
正しいキーをアップロードしたと確信しています。私は AWSが使用する奇妙な指紋フォーマットと指紋が一致することを確認した です。しかし、それは解読しません。
キーファイルをアップロードして、フォームに貼り付けてみました。
最終的には、末尾の改行が削除されていないことがわかり、キーの空白行が削除されました。ただし、[パスワードの復号化]をクリックすると、新しいエラーが表示されます。
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
コマンド 。
以下も参照してください。
これは私のためにmacOSでうまくいったものです:
openssl rsa -in $HOME/.ssh/aws-remote -out /Users/home/desktop/unencrypted-rsa.txt
次の行を探すことで、.pemファイルがパスワードで暗号化されているかどうかを確認できることに注意してください。存在する場合は、Amazonで使用する前に復号化する必要があります。
Proc-Type: 4,ENCRYPTED
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
私のMacでは、base64のコマンドライン引数が異なります。
これは私のために働きました:
base64 -D -i /tmp/file | openssl rsautl -decrypt -inkey /path/to/key.pem
これはうまくいく