如何重置 EC2 Windows 实例的管理员密码?

上次更新时间:2020 年 9 月 18 日

我想重置我的 Amazon Elastic Compute Cloud (Amazon EC2) Windows 实例的管理员密码。该如何操作?

解决方法

您可以使用 AWS Systems Manager 或 EC2Rescue 重置 EC2 Windows 实例的管理员密码。

Systems Manager Run Command AWSSupport-RunEC2RescueForWindowsTool(联机方法)

先决条件:

  • 您必须为 AWS 账户配置 Systems Manager,并在实例上安装 Systems Manager 代理。有关更多信息,请参阅设置 AWS Systems Manager
  • 该实例必须拥有使用公有 IP 地址或 NAT 访问 Internet 的权限(适用于 Systems Manager)。
    -或者-
    该实例必须使用为 Systems Manager 配置的 Amazon Virtual Private Cloud (Amazon VPC) 终端节点。
    有关更多信息,请参阅 VPC 终端节点

要通过 Run Command 使用 Systems Manager 重置管理员密码,请按照以下步骤操作:

1.    将以下策略附加到与实例关联的 IAM 角色,以便将加密的密码写入参数仓库。

{ 
  "Version": "2012-10-17", 
  "Statement": [ 
    { 
      "Effect": "Allow", 
      "Action": [ 
      "ssm:PutParameter" 
      ], 
      "Resource": [ 
        "arn:aws:ssm:*:*:parameter/EC2Rescue/Passwords/i-*" 
        ] 
    } 
  ] 
} 

2.    打开 AWS Systems Manager 控制台,然后从导航窗格中选择运行命令

3.    选择 Run a Command(运行命令)。

4.    在 Command document(命令文档)部分,选择 AWSSupport-RunEC2RescueForWindowsTool。

5.    在命令参数部分,验证命令是否设置为 ResetAccess

6.    在目标部分,选择手动选择实例,然后选择您的实例。

7.    选择运行

8.    在目标和输出部分,选择您的实例的实例 ID

9.    有关如何检索新密码的说明,请选择查看输出

10.    在重新获得实例的访问权限后,最好轮换密码并从 Parameter Store 中删除此参数。

有关更多信息,请参阅将 EC2Rescue for Windows Server 与 Systems Manager Run Command 结合使用

Systems Manager Automation AWSSupport-ResetAccess(脱机方法)

警告:在运行自动化之前,请注意以下事项:

  • 如果您没有使用弹性 IP 地址,则当您停止实例时,将会释放公有 IP 地址。
  • 如果此实例具有实例存储卷,当实例停止时,实例上的任何数据都将丢失。
  • 如果实例关闭行为设置为 Terminate(终止),则实例停止时将会终止。
  • 如果实例属于 Auto Scaling 组,请先从 Auto Scaling 组分离该实例。在您停止和启动实例后,重新将该实例附加到 Auto Scaling 组。

AWSSupport-ResetAccess 是一个 Systems Manager Automation 文档,它使用 AWS CloudFormation 和 AWS Lambda 函数实现 EC2Rescue 脱机密码重置操作的自动化。该自动化文档将可以:

  • 创建一个实例,帮助在您的可用区中恢复。
  • 附加和分离 EBS 卷。
  • 运行 EC2Rescue 实用工具。
  • 创建与您的环境隔离的 Amazon VPC 以用于 EC2Rescue。
  • 创建实例的备份 AMI。

在以下情况下,您可以使用 AWSSupport-ResetAccess 文档:

  • 您丢失了 EC2 密钥对,并希望从 EC2 实例创建启用了密码的 AMI,以便使用现有密钥对启动新的实例。
  • 您丢失了本地管理员密码,并希望生成可使用当前 EC2 密钥对解密的新密码。

1.    打开 AWS Systems Manager 控制台,然后从导航窗格中选择自动化

2.    选择执行自动化

3.    在自动化文档部分,选择 AWSSupport-ResetAccess,然后选择下一步

4.    对于 Input parameters(输入参数),输入您的 EC2 实例的 InstanceID

5.    选择执行

6.    等待状态变为 Success(成功)。这最多可能需要 25 分钟的时间。

注意:在 Execution detail(执行详细信息)页面中,查看 Executed steps(已执行的步骤)以监控执行进度。展开 Outputs(输出)以查看自动化的输出。要返回此页面,请打开 AWS Systems Manager 控制台,然后从导航窗格中选择自动化。选择正在运行的自动化,然后选择查看详细信息

7.    使用您的现有密钥对通过 EC2 控制台为新生成的密码解码。有关更多信息,请参阅启动实例后,如何检索 Windows 管理员密码?

如果您丢失了 EC2 密钥对

1.    停止您的实例。

警告:停止实例之前,您需要注意以下事项:

  • 如果您没有使用弹性 IP 地址,则当您停止实例时,将会释放公有 IP 地址。
  • 如果此实例具有实例存储卷,当实例停止时,实例上的任何数据都将丢失。
  • 如果实例关闭行为设置为 Terminate(终止),则实例停止时将会终止。
  • 如果实例属于 Auto Scaling 组,请先从 Auto Scaling 组分离该实例。在您停止和启动实例后,重新将该实例附加到 Auto Scaling 组。

有关更多信息,请参阅停止并启动实例

2.    打开 Amazon EC2 控制台,然后选择 AMI

3.    搜索您的实例 ID

4.    选择名为 AWSSupport-EC2Rescue-Post-Script-Backup-i-xxxxxxxxx_Date 的 AMI,然后选择 Launch(启动)。

5.    按照启动向导操作以指定实例的配置,然后选择您拥有的密钥对。

6.    在终止其他实例之前,确认您能够连接到新实例,并且您的应用程序正在按预期运行。

EC2Rescue(脱机或联机方法)

要在下一次启动时重新生成管理员密码,您可以使用 EC2Rescue 启用 EC2SetPassword

1.    选择 Diagnose and Rescue。EC2Config 部分显示当前的 Ec2SetPassword 设置。选择 Next

2.    在检测可能存在的问题部分,选中 Ec2SetPassword 复选框,然后选择下一步

有关更多信息,请参阅如何使用 EC2Rescue 工具排查我的 EC2 Windows 实例问题?