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