Amazon web services 如何检查密钥对是否仍在EC2中使用?

Amazon web services 如何检查密钥对是否仍在EC2中使用?,amazon-web-services,amazon-ec2,administration,devops-services,Amazon Web Services,Amazon Ec2,Administration,Devops Services,我们以前的Devops在EC2中创建了几个密钥对。看起来有些已经不用了。所以我想删除它们。我如何找到创建密钥对的时间以及当前是否使用了密钥对(最好在控制台中)?目前,AWS没有提供任何方法来检索创建密钥对的日期和时间。在您的情况下,您可以做的是,检查EC2控制台中为实例创建的密钥对,并删除其余未使用的密钥对。这将提供正在使用的AWS密钥对的列表 aws ec2 --profile default describe-key-pairs --query KeyPairs[].[KeyName] --

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

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

这将提供正在使用的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
它获取
键对的列表
,并使用该输出匹配使用这些
键的服务器。如果未使用
密钥对
,它将不会出现在列表中

输出:

假钥匙
第二把假钥匙

这将匹配也被关闭的服务器

我想看看这在
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

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

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

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


底线:在Amazon EC2和内部部署上遵循您的正常安全程序。

所用的是指用户正在使用它们登录吗?或者你是说部署在某个地方?