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)密钥

  1. 使用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就可以连接到服务器了。  

陈汉卿

云业务事业部 | 高级系统架构师

神州泰岳软件股份有限公司·AWS战略合作伙伴

AWS Solution Provider | Migration | DevOps | Cloud Management Tools(CMT) ISV Partner