这个问题搞了我2天时间,所以要好好记录一下。对于Windows Server 2012之前和Server 2016之后的处理方式是不一样的,我在误打误撞中,用了2012的方法解决了2016的问题, 因为我不知道忘记密码的EC2是2016版本。
而且Windows的这类问题(忘记key pair和密码)的处理方式比Linux的要复杂。
- 关闭该instance, 这个instance tag标记为original-instance
- 到Volume处找到该instance的volume,然后Detach
- 删除旧Key
-
创建一个新的EC2 Instance,tag标记为new-instance
- 新Instance要跟有问题的在同一个区域,例如us-east-1a,不然无法加载volume
- Launch,然后弄一个跟之前(已经丢失忘记的key)一样的key名字,并下载保存key
以下这步很关键,之前的尝试我都弄错了
- 把忘记密码的instance创建Image
- 然后在IMAGES -- > AMI中查看进度,需要几分钟时间,完成后点Launch,这个步骤跟新建instance类似,为跟那个新建的instance区分开来,我们把这个instance命名为 image-instance
-
创建好后即可立即关闭此Instance,然后把image-instance的volume挂载到new-instance,上
- 把有问题的volume加载到这台新instance上,Action -- > Attach Volume
- 获取新instance密码
- 导入保存的key文件获取密码
- 登入新instance,并下载工具:https://s3.amazonaws.com/ec2rescue/windows/EC2Rescue_latest.zip
- 完成后Detach volume然后重新挂载会原instance,注意要把Device设为 /dev/sda1,这样才是C盘
- 启动Instance