如果EC2实例忘记了密码或秘钥,该如何重置密码和秘钥呢?

方法1:输入用户信息

警告:在开始执行此过程之前,请注意以下事项:

  • 此过程需要停止和启动您的 EC2 实例。请注意,实例存储卷中的数据将丢失。有关更多信息,请参阅确定实例的根设备类型。请务必备份您想保存在实例存储卷上的所有数据。
  • 停止并重新启动实例会更改实例的公有 IP 地址。在将外部流量路由到您的实例时,最佳做法是使用弹性 IP 地址而不是公有 IP 地址。
  1. 创建新的密钥对。

  2. 如果您在 Amazon EC2 控制台中创建私有密钥,请检索密钥对中的公钥。

  3. 打开 Amazon EC2 控制台。

  4. 停止您的实例。

  5. 依次选择操作实例设置查看/更改用户数据

  6. 将以下脚本复制到查看/更改用户数据对话框中:
Content-Type: multipart/mixed; boundary="//"MIME-Version: 1.0--//Content-Type: text/cloud-config; charset="us-ascii"MIME-Version: 1.0Content-Transfer-Encoding: 7bitContent-Disposition: attachment; filename="cloud-config.txt"#cloud-configcloud_final_modules:- [users-groups, once]users:  - name: username (用户名root/centos/ec2-user根据自己情况来)    ssh-authorized-keys:     - PublicKeypair(注意这里是直接填写完整的rsa-开头的公钥)

username 替换为您的用户名,如 ec2-user。您可以输入默认用户名,或者如果先前已为该实例设置了自定义用户名,则输入此用户名。有关默认用户名的列表,请参阅连接到实例的一般先决条件。

PublicKeypair 替换为第 2 步中检索到的公钥。确保输入以 ssh-rsa 开头的完整公钥。

  1. 选择保存

  2. 启动您的实例。

  3. cloud-init 阶段完成后,请验证公钥是否已被替换。

重要提示:由于脚本包含密钥对,请删除用户数据字段中的脚本。

  1. 停止您的实例。

  2. 依次选择操作实例设置查看/更改用户数据

  3. 删除查看/更改用户数据对话框中的所有文本,然后选择保存

  4. 启动您的实例。

注意:如果您的实例为 Amazon Linux 2 2.0.20190618 或更高版本,则可以使用 EC2 Instance Connect 连接到该实例。

方法 2:使用 AWS Systems Manager

如果您无法访问的实例在 AWS Systems Manager 中被列为托管实例,则可以使用 AWSSupport-ResetAccess 文档从丢失密钥对的场景中恢复。该自动化文档在指定的 EC2 实例上使用适用于 Linux 的 EC2Rescue 工具来自动生成并添加新的 SSH(公有/私有)密钥对。

您的实例的新 SSH 私钥已加密并保存在 AWS Systems Manager Parameter Store 中。参数名称为 /ec2rl/openssh/instance_id/key。使用此参数的值作为内容创建一个新的 .pem 文件,并将其用于连接您无法访问的实例。

注意:自动化工作流程会创建一个备份且启用密码的 Amazon 系统映像 (AMI)。新的 AMI 不会自动删除,而是保留在您的账户中。

要找到这些 AMI:

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

  2. 在搜索字段中输入自动化执行 ID。

以上两个方法方法一尝试了好几次,没有成功,方法2由于实例并不是托管实例,无法使用

以上文档源文地址:https://aws.amazon.com/cn/premiumsupport/knowledge-center/user-data-replace-key-pair-ec2/

方法三 磁盘转移大法(我使用该方法成功,终极方法,iptables不小心墙掉ssh端口也可以用该方法解决哦)

  1. 由于生产环境都是系统盘和数据盘区分,数据都是存储在数据盘上,这里就有可操作性空间
  2. 把数据卷断开源实例连接(这里也可以做快照)
  3. 新建一个和源实例一个镜像的新实例(包括地域,安全组,vpc子网,密钥对尽量保持一致,省的后面改)
  4. 把断开的数据卷关联到新实例上
  5. 登录新实例系统,挂载卷,能查看到mysql,nginx等数据就完美
  6. 安装需要的程序软件,尽量和源实例上版本保持一致,恢复环境后,从新把源实例上的弹性IP绑定到新实例上

更多相关文章

  1. 静态路由实例
  2. mysql从入门到优化(2)数据的增删改查操作总结
  3. 都想学大数据开发?年轻人耗子尾汁吧~
  4. 社会化海量数据采集爬虫框架搭建
  5. 数据结构之:二分搜索树
  6. 【荐读】基于文本数据的消费者洞察
  7. BigDecima类型数据的处理--Non-terminating decimal expansio
  8. Flyway 助力数据库脚本自动化管理攻略
  9. MySQL单表数据不要超过500万行:是经验数值,还是黄金铁律?

随机推荐

  1. Android(安卓)Metro风格的Launcher开发系
  2. android基础知识17:Android设备常见问题与
  3. android textview xml 属性设置
  4. Icon Design Guidelines-android 图标设
  5. android环境搭建及改变默认avd路径
  6. Android 属性动画(Property Animation) 源
  7. [better practice系列]Android处理好acti
  8. It's Android Time:程序员创富有道
  9. [置顶] 3D引擎--可移植到Android的开源的
  10. Android线程的学习