Когда экземпляр Windows создается в AWS, его пароль шифруется с использованием открытой части ключа SSH.
Затем можно использовать следующую команду для получения зашифрованного пароля:
aws ec2 get-password-data --instance-id=i-0a5102eb55ed6e0b9
(Видеть https://docs.aws.amazon.com/cli/latest/reference/ec2/get-password-data.html#examples)
Команда возвращает следующие данные:
{
"InstanceId": "i-0a5102eb55ed6e0b9",
"Timestamp": "2019-11-04T12:21:30.000Z",
"PasswordData": "\r\nbase64_data==\r\n"
}
Зашифрованные данные пароля закодированы в формате base64, но можно расшифровать поле "PasswordData", если у вас есть закрытая часть ключа SSH:
echo "base64_data" | base64 --decode | openssl rsautl -decrypt -inkey "./path_to_private_ssh_key"
(См. Пример репозитория Github на https://github.com/tomrittervg/decrypt-windows-ec2-passwd/blob/master/decrypt-windows-ec2-passwd.sh)
Это работает нормально, однако я использую Nitrokey Professional для хранения моего закрытого ключа и не вижу способа указать команде openssl использовать карту GPG для расшифровки данных. Я бы хотел, чтобы личные ключи не были на моем диске, если это возможно.
Для справки, чтобы получить открытый ключ в AWS, я экспортировал открытый ключ в правильный формат SSH для AWS, используя gpg --export-ssh-key nameofuser@example.com
команда.
Есть ли способ расшифровать данные с помощью карты?