2

我们之前的 Devops 在 EC2 中创建了几个密钥对。看起来其中一些不再使用了。所以我想删除它们。如何找到密钥对的创建时间以及当前是否使用它们(最好在控制台中)?

4

3 回答 3

4

这将提供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")

输出:

假密钥未使用

于 2019-05-24T22:46:02.520 回答
1

密钥对是 Linux 的一项功能,而不是 AWS。

当从 Amazon Linux AMI 启动 Amazon EC2 实例时,实例上有一些代码将指定的密钥对复制到/users/ec2-user/.ssh/authorized_keys文件中。在此之后,它只是普通的 Linux。

因此,了解实例是否允许通过特定密钥对登录的唯一方法是查看每个实例,在每个用户的.ssh/authorized_keys文件中查找该密钥对。

应该提到的是,AWS 生成的密钥对不是持续管理实例登录的推荐方法。您的组织可能有一个 Active Directory 或 LDAP 服务器,因此应将实例配置为使用这些身份验证服务而不是 AWS 密钥对。这样,在中心位置停用用户将非常简单,而不必单独访问每个实例。

底线:遵循您在 Amazon EC2 和本地的正常安全程序。

于 2019-05-24T22:48:00.043 回答
0

目前,AWS 不提供任何方法来检索关于创建密钥对的日期和时间。在您的情况下,您可以做的是检查为 EC2 控制台中的实例创建的密钥对,并删除其余未使用的密钥对。

于 2019-05-24T17:03:36.543 回答