我知道get-password-data命令可以显示PasswordData数据,例如:

$ aws ec2 get-password-data --instance-id i-0123456789
{
    "InstanceId": "i-0123456789",
    "PasswordData": "\r\nAOh...xg==\r\n",
    "Timestamp": "2018-03-27T16:52:04.000Z"
}


但是我想知道使用哪个密钥对名称来启动实例,所以我可以使用--priv-launch-key传递它以解密密码。

#1 楼

对于给定的实例,您将首先使用aws ec2 describe-instances获取实例的信息JSON。

该信息还包含用于创建该实例的密钥对名称。实例i-0e2x8xd7xxx(注意:我使用了很棒的工具jq进行JSON解析,但是您可以使用任何其他解决方案) />
aws ec2 describe-instances --instance-ids i-0e2x8xd7xxx | jq '.Reservations[].Instances[].KeyName'


您可以将其存储在变量中,例如$keypair_name,然后将其传递到aws ec2 get-password-data命令中。您的密钥对所在的位置,例如$keypair_path

例如:

"my_key_name"


#2 楼

基于@Vish答案,我创建了以下外壳程序脚本:

#/usr/bin/env bash
# Script to show password data of the EC2 instance.
[ $# -eq 0 ] && { echo "Usage: 
./show_ec2_password_data.sh i-instance_id
instance_id ..."; exit; } keyname=$(aws ec2 describe-instances --query 'Reservations[].Instances[].KeyName' --output text --instance-ids ) pemfile=$(find ~/.ssh -name "*$keyname*.pem" -print -quit) if [ -z "$pemfile" ]; then aws ec2 get-password-data --instance-id else aws ec2 get-password-data --instance-id --priv-launch-key $pemfile fi


,该脚本旨在根据密钥对名称解密密码。默认情况下,它正在用户~/.ssh文件夹中查找PEM文件。

用法:

q4312078q