Amazon Elastic Compute Cloud
Windows 实例用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

Amazon EC2 密钥对和 Windows 实例

Amazon EC2 使用公有密钥密码术加密和解密登录信息。公有密钥密码术使用公有密钥加密某个数据 (如一个密码),然后收件人可以使用私有密钥解密数据。公有和私有密钥被称为密钥对

要登录您的实例,您必须创建一个密钥对,并在启动实例时指定密钥对的名称,然后使用私有密钥连接实例。 对于 Windows 实例,您可以使用私有密钥获得管理员密码,然后使用 RDP 登录实例。有关密钥对和 Linux 实例的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的 Amazon EC2 密钥对

创建密钥对

您可以使用 Amazon EC2 创建密钥对。有关更多信息,请参阅 使用 Amazon EC2 创建密钥对

或者,您也可以使用第三方工具,然后将公有密钥导入 Amazon EC2。有关更多信息,请参阅 将您自己的公有密钥导入 Amazon EC2

每个密钥对需要一个名称。切记选择一个容易记住的名称。Amazon EC2 会将公有密钥与您指定的密钥名称相关联。

Amazon EC2 只会存储公有密钥,您需要存储私有密钥。拥有您的私有密钥的任何人都可以解密您的登录信息,因此将您的私有密钥保存在一个安全的位置非常重要。

Amazon EC2 使用的密钥是 2048-bit SSH-2 RSA 密钥。对于每个区域,您可以拥有多达 5000 个密钥对。

启动并连接到您的实例

当您启动实例时,您应该指定计划用于连接到该实例的密钥对的名称。如果在启动实例时未指定现有密钥对的名称,您将无法连接到该实例。连接到该实例时,您必须指定与在启动该实例时指定的密钥对相应的私有密钥。

使用 Amazon EC2 创建密钥对

您可以使用 Amazon EC2 控制台或命令行创建密钥对。创建密钥对之后,您可以在启动实例时指定它。

使用 Amazon EC2 控制台创建密钥对

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中的 NETWORK & SECURITY 下,选择 Key Pairs

    注意

    导航窗格位于 Amazon EC2 控制台的左侧。如果您看不到窗格,它可能被最小化了;请选择箭头展开该窗格。

  3. 选择 Create Key Pair

  4. Create Key Pair 对话框的 Key pair name 字段中输入新密钥对的名称,然后选择 Create

  5. 您的浏览器会自动下载私有密钥文件。基本文件名是您为密钥对指定的名称,文件扩展名为 .pem。将私有密钥文件保存在安全位置。

    重要

    这是您保存私有密钥文件的唯一机会。当您启动实例时,您将需要提供密钥对的名称;当您每次连接到实例时,您将需要提供相应的私有密钥。

使用命令行创建密钥对

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

将您自己的公有密钥导入 Amazon EC2

如果不使用 Amazon EC2 创建密钥对,您可以使用第三方工具创建一个 RSA 密钥对,然后将公有密钥导入 Amazon EC2。举例来说,您可以使用 ssh-keygen (通过标准 OpenSSH 安装提供的工具) 创建密钥对。或者,您可以使用 Java、Ruby、Python 和许多其他提供标准库的编程语言来创建 RSA 密钥对。

Amazon EC2 接受以下格式:

  • OpenSSH 公有密钥格式

  • Base64 编码的 DER 格式

  • 如在RFC4716指定的 SSH 公有密钥文件格式

Amazon EC2 不接受 DSA 密钥。请确保您的密钥生成器被设置为创建 RSA 密钥。

支持的长度:1024、2048 和 4096。

要使用第三方工具创建密钥对

  1. 使用您选择的第三方工具生成密钥对。

  2. 将公有密钥保存至本地文件。例如, C:\keys\my-key-pair.pub。此文件的文件扩展名并不重要。

  3. 将私有密钥保存至另一个扩展名为 .pem 的本地文件。例如, C:\keys\my-key-pair.pem。将私有密钥文件保存在安全位置。当您启动实例时,您将需要提供密钥对的名称;当您每次连接到实例时,您将需要提供相应的私有密钥。

使用 Amazon EC2 控制台通过以下步骤导入密钥对。

导入公有密钥

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中的 NETWORK & SECURITY 下,选择 Key Pairs

  3. 选择 Import Key Pair

  4. Import Key Pair 对话框中,选择 Browse,然后选择之前保存的公有密钥文件。在 Key pair name 字段中为新的密钥对键入一个名称,然后选择 Import

使用命令行导入公有密钥

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

在成功导入公有密钥文件后,您可以按照以下说明使用 Amazon EC2 控制台验证密钥对是否成功导入。

验证密钥对是否已导入

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 从导航栏中,选择您在其中创建密钥对的区域。

  3. 在导航窗格中的 NETWORK & SECURITY 下,选择 Key Pairs

  4. 验证您导入的密钥对是否在密钥对的显示列表中。

使用命令行查看密钥对

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

在 Linux 上检索密钥对的公有密钥

在本地 Linux 或 Mac 计算机上,可使用 ssh-keygen 命令检索密钥对的公有密钥。

从计算机检索公有密钥

  1. 在您已下载私有密钥的计算机上使用 ssh-keygen 命令:

    ssh-keygen -y
  2. 在提示输入密钥所在的文件时,请指定您的 .pem 文件的路径,例如:

    /path_to_key_pair/my-key-pair.pem
  3. 该命令将返回公有密钥:

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE

    如果此命令失败,请运行以下命令以确保更改对您的密钥对文件的权限,以便只有您才能查看该文件:

    chmod 400 my-key-pair.pem

在 Windows 上检索密钥对的公有密钥

在本地 Windows 计算机上,您可以使用 PuTTYgen 获取密钥对的公有密钥。

启动 PuTTYgen,选择 Load,然后选择 .ppk.pem 文件。PuTTYgen 会显示公有密钥。

从实例检索密钥对的公有密钥

您在启动实例时指定的公有密钥也可以通过实例元数据使用。要查看您在启动实例时指定的公有密钥,请从您的实例中使用以下命令:

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 my-key-pair

如果您更改用于连接到实例的密钥对,我们将不会更新实例元数据以显示新的公有密钥;您看到的仍是当您启动实例时在实例元数据中为密钥对指定的公有密钥。

有关更多信息,请参阅 检索实例元数据

验证您的密钥对指纹

在 Amazon EC2 控制台的 Key Pairs (密钥对) 页面上,Fingerprint (指纹) 列显示从您的密钥对生成的指纹。AWS 根据密钥对是由 AWS 还是第三方工具生成以不同方式计算指纹。如果您是使用 AWS 创建的密钥对,则会使用 SHA-1 哈希函数计算指纹。如果您使用第三方工具创建了密钥对并将公有密钥上传到 AWS,或者如果您从一个现有的 AWS 创建的私有密钥生成了一个新的公有密钥并将其上传到 AWS,则会使用 MD5 哈希函数计算指纹。

您可以使用 Key Pairs (密钥对) 页面上显示的指纹验证您本地计算机上的私有密钥是否与 AWS 中存储的公有密钥匹配。

如果您使用 AWS 创建了密钥对,那么您可以使用 OpenSSL 工具从私有密钥文件生成指纹:

C:\> openssl pkcs8 -in path_to_private_key -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c

如果您使用第三方工具创建了密钥对并将公有密钥上传到 AWS,则可以使用 OpenSSL 工具从您本地计算机上的私有密钥文件生成指纹。

C:\> openssl rsa -in path_to_private_key -pubout -outform DER | openssl md5 -c

输出应与控制台中显示的指纹匹配。

删除您的密钥对

当您删除密钥对时,仅删除 Amazon EC2 的公有密钥副本。删除密钥对不影响您计算机上的私有密钥或是已使用该密钥对启动的任何实例上的公有密钥。您不能使用已删除的密钥对启动新实例,不过,只要您仍然有私有密钥 (.pem) 文件,就可以继续连接到使用已删除的密钥对启动的任何实例。

注意

如果您使用的是 Auto Scaling 组 (例如,在 Elastic Beanstalk 环境中),请确保您要删除的密钥对未在启动配置中指定。Auto Scaling 检测到运行不正常的实例时会启动替代实例;但是,如果找不到密钥对,实例将启动失败。

您可以使用 Amazon EC2 控制台或命令行删除密钥对。

使用控制台删除密钥对

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中的 NETWORK & SECURITY 下,选择 Key Pairs

  3. 选择密钥对,然后选择 Delete

  4. 系统提示时,请选择 Yes

使用命令行删除密钥对

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

丢失私有密钥时连接到 Windows 实例

当您连接到新启动的 Windows 实例时,您需要使用在启动实例时指定的密钥对的私有密钥对管理员账户的密码进行解密。

如果您丢失了管理员密码,并且不再拥有私有密钥,则不再能访问此 Windows 实例。您可以将该实例替换为用新密钥对启动的新实例,并重置管理员密码。有关更多信息,请参阅 重置丢失或过期的 Windows 管理员密码