验证密钥 - Amazon Elastic Compute Cloud

验证密钥

验证您的密钥对的指纹

在 Amazon EC2 控制台的 Key Pairs(密钥对)页面,Fingerprint(指纹)列显示从您的密钥对生成的指纹。

您可以使用 Key Pairs(密钥对)页面上显示的指纹验证您本地机器上的私有密钥是否与 Amazon EC2 中存储的公有密钥匹配。在您已下载私有密钥文件的电脑上,从私有密钥文件生成指纹。输出应与控制台中显示的指纹匹配。

指纹如何计算

Amazon EC2 使用不同的哈希函数来计算 RSA 和 ED25519 密钥对的指纹。此外,对于 RSA 密钥对,Amazon EC2 使用不同的哈希函数以不同方式计算指纹,具体取决于密钥对是由 Amazon EC2 创建还是导入到 Amazon EC2 的。

下表所列的哈希函数用于计算由 Amazon EC2 创建以及导入到 Amazon EC2 的 RSA 和 ED25519 密钥对的指纹。

用于计算指纹的哈希函数
密钥对来源 RSA 密钥对 ED25519 密钥对
由 Amazon EC2 创建 SHA-1 SHA-256
导入到 Amazon EC2 MD5* SHA-256

* 如果您将公有的 RSA 密钥导入到 Amazon EC2,系统会使用 MD5 哈希函数计算指纹。无论您如何创建密钥对(例如,通过使用第三方工具或者从使用 Amazon EC2 创建的现有私有密钥生成新的公有密钥),都是如此。

在不同区域使用相同的密钥对时

如果您计划使用相同的密钥对连接到不同 AWS 区域中的实例,必须将公有密钥导入到将在其中使用公有密钥的所有区域。如果您使用 Amazon EC2 创建密钥对,可以从 Amazon EC2 私有密钥生成公有密钥,这样就可以将公有密钥导入到其他区域。

注意

如果您使用 Amazon EC2 创建 RSA 密钥对,然后从 Amazon EC2 私有密钥生成公有密钥,则导入的公有密钥的指纹将与原始公有密钥不同。这是因为使用 Amazon EC2 创建的原始 RSA 密钥的指纹是使用 SHA-1 哈希函数计算的,而导入的 RSA 密钥的指纹则使用 MD5 哈希函数计算。

对于 ED25519 密钥对,无论它们是由 Amazon EC2 创建还是导入到 Amazon EC2 的,指纹都将相同,因为两种情况下都使用相同的 SHA-256 哈希函数来计算指纹。

从私有密钥生成指纹

使用以下命令之一可从本地机器上的私有密钥生成指纹。

如果您使用的是 Windows 本地计算机,您可以使用 Windows Subsystem for Linux (WSL) 运行以下命令。按照 Windows 10 安装指南中的说明执行操作来安装 WSL 和 Linux 发行版。说明中的示例安装的是 Linux 的 Ubuntu 发行版,但您可以安装任意发行版。系统会提示您重新启动电脑以使更改生效。

  • 如果您使用 Amazon EC2 创建密钥对

    如以下示例中所示,使用 OpenSSL 工具生成指纹。

    对于 RSA 密钥对:

    $ openssl pkcs8 -in path_to_private_key -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c

    对于 ED25519 密钥对:

    $ ssh-keygen -l -f path_to_private_key
  • (仅限 RSA 密钥对)如果您将公有密钥导入到 Amazon EC2 (无论您创建密钥对的方式如何,例如,通过使用第三方工具或者从使用 Amazon EC2 创建的现有私有密钥生成新的公有密钥)

    如以下示例中所示,使用 OpenSSL 工具生成指纹。

    $ openssl rsa -in path_to_private_key -pubout -outform DER | openssl md5 -c
  • 如果您使用 OpenSSH 7.8 或更高版本创建 OpenSSH 密钥对,并将公有密钥导入到 Amazon EC2

    如以下示例中所示,使用 ssh-keygen 生成指纹。

    对于 RSA 密钥对:

    $ ssh-keygen -ef path_to_private_key -m PEM | openssl rsa -RSAPublicKey_in -outform DER | openssl md5 -c

    对于 ED25519 密钥对:

    $ ssh-keygen -l -f path_to_private_key