重置 Amazon EC2 实例的密码和SSH 密钥

文 | 沉默恶魔(转载请注明出处)
关注公众号:AWS爱好者
微信号:chenmoemo

今天参与了一个讨论,内容是在有AWS控制台根用户权限的情况下,能否重置 该账号下的Amazon EC2 实例的密码和SSH 密钥,从而登陆到该EC2系统,主要用于SSH密钥丢失或者密码忘记的情况;

另外现在很多企业的业务有这样的情境,需要和三方公司合作,三方公司负责出AWS资源(EC2),然后供我们企业跑业务,三方公司掌握着AWS控制台根用户权限,我们的企业掌握操作系统权限,这种情况下,三方公司是可以通过AWS控制台根用户权限进入我们企业操作系统并且会造成数据安全问题的。

如何达成呢?使用AWSSupport-ResetAccess,看下官方的简单介绍,然后我们就开始操作:

-AWSSupport-ResetAccess简介-

您可以使用 AWSSupport-ResetAccess文档在 Amazon EC2 Windows 实例上自动重新启用本地管理员密码生成,以及在 Amazon EC2 Linux 实例上生成新 SSH 密钥。AWSSupport-ResetAccess文档旨在执行 Systems Manager 操作、AWS CloudFormation 操作和 Lambda 函数的组合,从而将重置本地管理员密码通常所需的步骤自动化。

您可以使用 Automation 配合 AWSSupport-ResetAccess文档解决以下问题:

Windows

您丢失了 EC2 密钥对:要解决此问题,您可以使用 AWSSupport-ResetAccess文档,从当前实例创建启用了密码的 AMI,从 AMI 启动新实例,然后选择您拥有的密钥对。

您丢失了本地管理员密码:要解决此问题,您可以使用 AWSSupport-ResetAccess 文档生成可以使用当前 EC2 密钥对解密的一个新密码。

Linux

您丢失了 EC2 密钥对,或者配置了对实例的 SSH 访问但丢失:要解决此问题,您可以使用 AWSSupport-ResetAccess 文档创建当前实例的新 SSH 密钥,这使您能够重新连接到该实例。

-AWSSupport-ResetAccess工作原理-

使用自动化和 AWSSupport-ResetAccess文档对实例进行故障排除的工作原理如下:

  • 您为实例指定 ID 并运行自动化工作流程。
  • 系统创建一个临时 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 密钥(格式为 *ec2rlopenssh**instance_id**key*),通过 SSH 连接到实例。

-使用AWSSupport-ResetAccess重置EC2(LINUX)密钥-

看着很复杂是不是,其实操作很简单,因为AWS已经将上面的步骤放到了AWS Systems Manager的自动化里面。假设我们下面这台EC2的SSH密钥找不到了,我们用AWSSupport-ResetAccess重置下密钥:

1、进入AWS Systems Manager:

2、然后在自动化里面搜索AWSSupport-ResetAccess,然后进入:

3、选择手动执行,这样可以按照需求执行相应步骤,然后instanceid输入上面实例的id,其他参数如恢复实例类型,VPC,子网,角色默认即可:

4、然后执行相应步骤后等待即可,每个步骤的名称对应着改步骤具体的功能,Linux实例就不要选Windows相关的步骤:

5、全部执行完毕后,新的SSH密钥存储在了参数存储中,将其复制下来,用这个新的密钥即可登录上述测试的实例:

以上 ,使用新生成的SSH密钥,登录了原来的实例。

0 responses on "重置 Amazon EC2 实例的密码和SSH 密钥"

Leave a Message

error: Content is protected !!