我们之前的DevOps在EC2中创建了几个密钥对。看起来有些已经不再使用了,所以我想删除它们。我该如何查找这些密钥对是何时创建的以及它们是否当前正在使用(最好在控制台中)?
我们之前的 DevOps 在 EC2 中创建了几个密钥对。看起来有些已经不再使用了,所以我想删除它们。我该如何查找这些密钥对是何时创建的以及它们是否当前正在使用(最好在控制台中)?
我们之前的DevOps在EC2中创建了几个密钥对。看起来有些已经不再使用了,所以我想删除它们。我该如何查找这些密钥对是何时创建的以及它们是否当前正在使用(最好在控制台中)?
我们之前的 DevOps 在 EC2 中创建了几个密钥对。看起来有些已经不再使用了,所以我想删除它们。我该如何查找这些密钥对是何时创建的以及它们是否当前正在使用(最好在控制台中)?
这将提供正在使用的 AWS KeyPairs
列表。
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
,则不会出现在列表中。
输出:
fake_key
second-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")
输出结果:
fake-key 未被使用
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
- Adam LabiKeypairs是Linux的一个功能,而不是AWS。
当从Amazon Linux AMI启动Amazon EC2实例时,实例上有一些代码将指定的密钥对复制到/users/ec2-user/.ssh/authorized_keys
文件中。此后,它就是普通的Linux。
因此,了解实例是否允许通过特定的密钥对登录的唯一方法是在每个实例上,在每个用户的.ssh/authorized_keys
文件中查找该密钥对。
需要提到的是,AWS生成的密钥对不是管理长期登录EC2实例的推荐方式。您的组织可能会有Active Directory或LDAP服务器,因此应配置实例以使用这些身份验证服务,而不是AWS密钥对。这样,可以非常简单地在中央位置停用用户,而无需逐个访问每个实例。
底线:在Amazon EC2和本地遵循您的正常安全程序。
aws ec2 describe-instances --query Reservations[].Instances[].[KeyName,InstanceId]
。 - Carl G目前,AWS没有提供任何检索密钥对创建日期和时间的方法。在您的情况下,您可以在EC2控制台中检查为实例创建的密钥对,并删除未使用的其余密钥对。