我们之前的 Devops 在 EC2 中创建了几个密钥对。看起来其中一些不再使用了。所以我想删除它们。如何找到密钥对的创建时间以及当前是否使用它们(最好在控制台中)?
3 回答
这将提供KeyPairs
正在使用的 AWS 列表。
aws ec2 --profile default describe-key-pairs --query KeyPairs[].[KeyName] --output text |xargs -I {} aws ec2 --profile default describe-instances --filters Name=key-name,Values={} --query Reservations[].Instances[].[KeyName,InstanceId] --output text| uniq
它获取一个列表KeyPairs
并使用该输出来匹配使用那些Keys
. 如果KeyPair
不使用 a,它将不会出现在列表中。
输出:
fake_key
第二个假密钥
这也将匹配关闭的服务器。
我想看看这会是什么样子,Python
所以你去吧。这将获得未使用的键和输出键的列表。
#! /usr/bin/env python
import boto3
region = 'us-east-1'
session = boto3.Session(profile_name='default')
ec2 = session.client('ec2')
response = ec2.describe_key_pairs()['KeyPairs']
for key in response:
found_instance = ec2.describe_instances(
Filters=[
{
'Name': 'key-name',
'Values': [key['KeyName']]
}
]
)['Reservations']
if len(found_instance) == 0:
print (key['KeyName'] + " is unused")
输出:
假密钥未使用
密钥对是 Linux 的一项功能,而不是 AWS。
当从 Amazon Linux AMI 启动 Amazon EC2 实例时,实例上有一些代码将指定的密钥对复制到/users/ec2-user/.ssh/authorized_keys
文件中。在此之后,它只是普通的 Linux。
因此,了解实例是否允许通过特定密钥对登录的唯一方法是查看每个实例,在每个用户的.ssh/authorized_keys
文件中查找该密钥对。
应该提到的是,AWS 生成的密钥对不是持续管理实例登录的推荐方法。您的组织可能有一个 Active Directory 或 LDAP 服务器,因此应将实例配置为使用这些身份验证服务而不是 AWS 密钥对。这样,在中心位置停用用户将非常简单,而不必单独访问每个实例。
底线:遵循您在 Amazon EC2 和本地的正常安全程序。
目前,AWS 不提供任何方法来检索关于创建密钥对的日期和时间。在您的情况下,您可以做的是检查为 EC2 控制台中的实例创建的密钥对,并删除其余未使用的密钥对。