AWS实例的密钥登录机制
AWS创建EC2实例时会生成一个密钥文件,有了这个密钥才能使用SSH登录实例,可以使用 AWSSupport-ResetAccess 文档在 Amazon EC2 Windows 实例上自动重新启用本地管理员密码生成,以及在 Amazon EC2 Linux 实例上生成新 SSH 密钥。
工作原理
使用自动化和
AWSSupport-ResetAccess 对实例进行故障排除的工作原理如下:
- 您为实例指定 ID 并运行 Automation 工作流程。
- 系统创建一个临时 VPC,然后运行一系列 Lambda 函数以配置该 VPC。
- 系统在与您的原始实例相同的可用区内为您的临时 VPC 标识一个子网。
- 系统启动一个临时的启用了 SSM 的 帮助程序实例。
- 系统停止您的原始实例并创建备份。然后,它将原始根卷附加到帮助程序实例。
- 系统使用 Run Command 在帮助程序实例上运行 EC2Rescue。在 Windows 上,EC2Rescue 通过在附加的原始根卷上使用 EC2Config 或 EC2Launch 为本地管理员启用密码生成。在 Linux 上,EC2Rescue 生成并注入新的 SSH 密钥并将私有密钥加密保存到 Parameter Store 中。完成后,EC2Rescue 重新将根卷附加回原始实例。
- 系统根据您的实例创建新 Amazon 系统映像 (AMI),现在密码生成已启用。您可以使用此 AMI 创建新 EC2 实例,并根据需要关联新密钥对。
- 系统重启您的原始实例,并终止临时实例。系统也将终止临时 VPC 和在自动化开始时创建的 Lambda 函数。
- Windows:您的实例生成一个新密码,您可以使用分配给实例的当前密钥对从 EC2 控制台对该密码进行解码。
Linux:您可以使用存储在 Systems Manager Parameter Store 中的 SSH 密钥(格式为
/ec2rl/openssh/instance_id/key),通过 SSH 连接到实例。
使用AWSSupport-ResetAccess重置EC2(LINUX)密钥
- 使用CloudFormation创建角色
S3 URL: https://s3.amazonaws.com/awssupport-ssm.us-east-2/cfn/EC2Rescue/AWSSupport-EC2RescueRole.template

复制Output中的Value,这是后续AssumeRole 的 ARN

2、进入
AWSSupport-ResetAccess

3、输入参数
InstanceID,指定无法访问实例的 ID
EC2RescueInstanceType,为 EC2Rescue 实例指定实例类型。默认实例类型为 t2.small
SubnetId,指定您指定的实例所在可用区中某个现有 VPC 的子网。
AssumeRole,从 CloudFormation 控制台复制的 AssumeRole ARN

4、执行自动化

5、检查结果

控制台显示执行成功,这时候去到Parameter Store,
/ec2rl/openssh/instance_id/key就是连接到服务器的密钥,通过SSH就可以连接到服务器了。