

# 在 Linux 实例上添加或更换公有密钥
<a name="replacing-key-pair"></a>


|  | 
| --- |
| 如果您丢失了私有密钥，则无法访问任何使用该密钥对的实例。有关使用与您在启动时指定的密钥对不同的密钥对连接到实例的更多信息，请参阅[我丢失了私有密钥](TroubleshootingInstancesConnecting.md#replacing-lost-key-pair)。 | 

启动实例时，您可以[指定密钥对](ec2-instance-launch-parameters.md#liw-key-pair)。如果您在启动时指定密钥对，当您的实例首次启动时，公有密钥将放置在 `~/.ssh/authorized_keys` 内的一个条目中的 Linux 实例中。使用 SSH 初次连接到 Linux 实例时，您需要指定默认用户和与存储在 Linux 实例上的公有密钥对应的私有密钥。

连接到实例后，您可以更改用于访问实例默认系统账户的密钥对，方法是在实例上添加新的公有密钥，或者替换实例上的公有密钥（删除现有公有密钥并添加新的公有密钥）。您还可以从实例中删除所有公有密钥。

您可能会出于以下原因添加或替换密钥对：
+ 如果组织中有用户需要使用单独的密钥访问系统用户，您可以将此公有密钥添加到实例。
+ 如果某人有私有密钥的副本（`.pem` 文件），而您想要防止他们连接到实例（例如在他们已离开企业的情况下），您可以删除实例上的公有密钥，并将其替换为新的密钥。
+ 如果您从实例创建 Linux AMI，则公有密钥材料将从实例复制到 AMI。如果您从 AMI 启动实例，则新实例将包含来自原始实例的公有密钥。要防止拥有私有密钥的用户连接到新实例，您可以在创建 AMI *之前*从原始实例中删除公有密钥。

使用以下程序修改默认用户的密钥对，例如 `ec2-user`。有关向实例添加用户的信息，请参阅实例上的操作系统的文档。

**添加或替换密钥对**

1. 使用 [Amazon EC2 控制台](create-key-pairs.md#having-ec2-create-your-key-pair)或[第三方工具](create-key-pairs.md#how-to-generate-your-own-key-and-import-it-to-aws)创建新的密钥对。

1. 从新密钥对检索公有密钥。有关更多信息，请参阅 [检索公有密钥材料](describe-keys.md#retrieving-the-public-key)。

1. [连接到您的 实例](connect-to-linux-instance.md)。

1. 在实例上，使用您选择的文本编辑器，打开 `.ssh/authorized_keys` 文件。将新密钥对的公有密钥信息粘贴到现有公有密钥信息下，然后保存该文件。

1. 从实例断开连接。测试您是否可以使用新密钥对的私有密钥文件连接到实例。

1. 如果您使用 Auto Scaling、EC2 实例集或启动模板来启动实例，请检查您要替换的密钥对是否在启动模板或启动配置中已指定。如果未指定，实例启动将失败。

1. (可选) 如果您要替换现有密钥对，请连接到实例并从 `.ssh/authorized_keys` 文件中删除原始密钥对的公有密钥信息。

**要从实例中删除公有密钥**

1. [连接到您的实例](connect-to-linux-instance.md)。

1. 使用您选择的文本编辑器，在实例上打开 `.ssh/authorized_keys` 文件。删除公有密钥信息，然后保存该文件。

**警告**  
如果从实例中删除所有公有密钥并断开与实例的连接，除非配置了其他登录方式，否则将无法再次连接该实例。