描述密钥对
您可以描述存储在 Amazon EC2 中的密钥对。您还可以检索公有密钥材料并识别启动时指定的公有密钥。
描述密钥对
您可以查看有关存储在 Amazon EC2 中的公有密钥的以下信息:公有密钥名称、ID、密钥类型、指纹、公有密钥材料、Amazon EC2 创建密钥的日期和时间(采用 UTC 时区)(如果密钥是由第三方工具创建的,则是将该密钥导入 Amazon EC2 的日期和时间),以及与该公有密钥相关联的所有标签。
您可以使用 Amazon EC2 控制台或 Amazon CLI 以查看有关您的公有密钥的信息。
- Console
-
要查看有关您的公有密钥的信息
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在左侧导航器中,选择 Key Pairs(密钥对)。
-
您可以在Key pairs(密钥对)表中查看每个公有密钥的相关信息。
-
要查看公有密钥的标签,请选中密钥旁边的复选框,然后选择操作、管理标签。
- Amazon CLI
-
要描述公有密钥
使用 describe-key-pairs
命令指定 --key-names
参数。aws ec2 describe-key-pairs --key-names
key-pair-name
示例输出
{ "KeyPairs": [ { "KeyPairId": "key-0123456789example", "KeyFingerprint": "1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f", "KeyName": "key-pair-name", "KeyType": "rsa", "Tags": [], "CreateTime": "2022-04-28T11:37:26.000Z" } ] }
或者,您可以指定
--key-pair-ids
参数,而不是--key-names
,以识别公有密钥。aws ec2 describe-key-pairs --key-pair-ids
key-0123456789example
要查看输出中的公有密钥材料,必须指定
--include-public-key
参数。aws ec2 describe-key-pairs --key-names
key-pair-name
--include-public-key示例输出 - 在输出中,
PublicKey
字段包含公有密钥材料。{ "KeyPairs": [ { "KeyPairId": "key-0123456789example", "KeyFingerprint": "1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f", "KeyName": "key-pair-name", "KeyType": "rsa", "Tags": [], "PublicKey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIj7azlDjVHAsSxgcpCRZ3oWnTm0nAFM64y9jd22ioI/ my-key-pair", "CreateTime": "2022-04-28T11:37:26.000Z" } ] }
检索公有密钥材料
您可以使用多种方法获取对公有密钥材料的访问权限。您可以从本地计算机上匹配的私有密钥中检索公有密钥材料,从使用公有密钥启动的实例上的实例元数据中检索公有密钥材料,或者使用 describe-key-pairs
Amazon CLI 命令来检索公有密钥材料。对于 Linux 实例,也可以从实例上的 authorized_keys
文件中检索公有密钥格式材料。
使用以下方法之一检索公有密钥材料。
- From the private key
-
要从私有密钥中检索公有密钥材料
在本地 Linux 或 macOS 计算机上,可使用 ssh-keygen 命令检索密钥对的公有密钥。指定您已在其中下载私有密钥的路径(
.pem
文件)。ssh-keygen -y -f /
path_to_key_pair
/my-key-pair.pem
该命令返回公有密钥,如以下示例所示。
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE
如果该命令失败,请运行以下命令以确保更改对您的私有密钥对文件的权限,以便只有您才能查看该文件。
chmod 400
key-pair-name
.pem - From the instance metadata
-
您可以使用实例元数据服务版本 2 或实例元数据服务版本 1 从实例元数据中检索公有密钥。
注意
如果您更改用于连接到实例的密钥对,Amazon EC2 不会更新实例元数据以显示新的公有密钥。实例元数据将继续显示您在启动实例时指定的密钥对的公有密钥。
要从实例元数据中检索公有密钥材料
使用实例中的以下命令之一。
IMDSv2
[ec2-user ~]$
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
IMDSv1
[ec2-user ~]$
curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
示例输出
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE key-pair-name
有关实例元数据的更多信息,请参阅 访问 EC2 实例的实例元数据。
- From the instance
-
如果您在启动 Linux 实例时指定密钥对,当您的实例首次启动时,公有密钥的内容将放置
~/.ssh/authorized_keys
内的一个条目中的实例上。要从实例中检索公有密钥材料
-
在终端窗口中,使用您常用的文本编辑器(如
authorized_keys
或 vim)打开 nano 文件。[ec2-user ~]$
nano ~/.ssh/authorized_keys
authorized_keys
文件打开,显示公有密钥,后面是密钥对的名称。以下是名为
的密钥对的示例条目。key-pair-name
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE
key-pair-name
- From describe-key-pairs
-
使用
describe-key-pairs
Amazon CLI 命令检索公有密钥材料使用 describe-key-pairs
命令指定 --key-names
参数,以识别公有密钥。要将公有密钥材料包含在输出中,请指定--include-public-key
参数。aws ec2 describe-key-pairs --key-names
key-pair-name
--include-public-key示例输出 - 在输出中,
PublicKey
字段包含公有密钥材料。{ "KeyPairs": [ { "KeyPairId": "key-0123456789example", "KeyFingerprint": "1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f", "KeyName": "key-pair-name", "KeyType": "rsa", "Tags": [], "PublicKey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIj7azlDjVHAsSxgcpCRZ3oWnTm0nAFM64y9jd22ioI/ my-key-pair", "CreateTime": "2022-04-28T11:37:26.000Z" } ] }
或者,您可以指定
--key-pair-ids
参数,而不是--key-names
,以识别公有密钥。aws ec2 describe-key-pairs --key-pair-ids
key-0123456789example
--include-public-key
- From the private key
-
要从私有密钥中检索公有密钥材料
在本地 Windows 计算机上,您可以使用 PuTTYgen 获取密钥对的公有密钥。
启动 PuTTYgen 并选择 Load (加载)。选择
.ppk
或者.pem
私有密钥文件。PuTTYgen 在 Public key for pasting into OpenSSH authorized_keys file (粘贴到 OpenSSH authorized_keys 文件的公有密钥) 下方显示公有密钥。也可以通过以下方式查看公有密钥:选择 Save public key (保存公有密钥),请指定文件的名称,然后打开文件。 - From the instance metadata
-
您可以使用实例元数据服务版本 2 或实例元数据服务版本 1 从实例元数据中检索公有密钥。
注意
如果您更改用于连接到实例的密钥对,Amazon EC2 不会更新实例元数据以显示新的公有密钥。实例元数据将继续显示您在启动实例时指定的密钥对的公有密钥。
要从实例元数据中检索公有密钥材料
使用实例中的以下命令之一。
IMDSv2
PS C:\>
[string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\>
Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
IMDSv1
PS C:\>
Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
示例输出
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE key-pair-name
有关实例元数据的更多信息,请参阅 访问 EC2 实例的实例元数据。
- From describe-key-pairs
-
使用
describe-key-pairs
Amazon CLI 命令检索公有密钥材料使用 describe-key-pairs
命令指定 --key-names
参数,以识别公有密钥。要将公有密钥材料包含在输出中,请指定--include-public-key
参数。aws ec2 describe-key-pairs --key-names
key-pair-name
--include-public-key示例输出 - 在输出中,
PublicKey
字段包含公有密钥材料。{ "KeyPairs": [ { "KeyPairId": "key-0123456789example", "KeyFingerprint": "1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f", "KeyName": "key-pair-name", "KeyType": "rsa", "Tags": [], "PublicKey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIj7azlDjVHAsSxgcpCRZ3oWnTm0nAFM64y9jd22ioI/ my-key-pair", "CreateTime": "2022-04-28T11:37:26.000Z" } ] }
或者,您可以指定
--key-pair-ids
参数,而不是--key-names
,以识别公有密钥。aws ec2 describe-key-pairs --key-pair-ids
key-0123456789example
--include-public-key
确定启动时指定的公有密钥
如果您在启动实例时指定公有密钥,则该实例将记录公有密钥名称。
要确定启动时指定的公有密钥
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择 Instances (实例),然后选择您的实例。
-
在详细信息选项卡的实例详细信息下,启动时分配的密钥对字段会显示您在启动实例时指定的公有密钥名称。
注意
即使您更改实例上的公有密钥或添加公有密钥,启动时分配的密钥对字段的值也不会更改。