Назад | Перейти на главную страницу

Используйте ключ ssh на карте GPG для расшифровки данных

Когда экземпляр 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 команда.

Есть ли способ расшифровать данные с помощью карты?