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

And*_*hov 9 administration amazon-ec2 amazon-web-services devops-services

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

ken*_*kas 10

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
Run Code Online (Sandbox Code Playgroud)

它获取一个列表KeyPairs并使用该输出来匹配使用这些输出的服务器Keys。如果不使用a,KeyPair它将不会出现在列表中。

输出:

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")
Run Code Online (Sandbox Code Playgroud)

输出:

假密钥未使用

  • 我必须将查询用引号引起来,否则就完美了。`aws ec2 --profile 默认描述密钥对 --query "KeyPairs[].[KeyName]" --输出文本 |xargs -I {} aws ec2 --profile 默认描述实例 --filters Name=key- name,Values={} --query "Reservations[].Instances[].[KeyName,InstanceId]" --output text| 独特` (3认同)

小智 0

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