AWS全球代理 Oncloud AI

AWS挂载附加磁盘恢复系统登录或指定数据

整体流程

  1. 创建一对新的 key密钥(可以通过AWS创建XXX.pem) 

  2. 停止出问题的 EC2(最好再打个快照做备份)

  3. 记下原实例的根卷 ID、可用区、根设备名

  4. 同一可用区新建一台临时救援机

  5. 把原实例根卷分离,挂到救援机。(救援机此时也需要关机才可以附加)

  6. 挂载磁盘,往原系统用户的 ~/.ssh/authorized_keys 里加入新公钥

  7. 修正权限

  8. 卸载磁盘,挂回原实例 

  9. 启动原实例,用新私钥登录

这个步骤是恢复系统用户登录的,如果不再需要恢复登录只是为了原来数据,挂载后将问题机器数据copy到新机器上即可

注意事项

1.创建机器网络设置这里选择编辑可以指定区域

image.png

实例先关机才可以分离和附加卷

image.png

2.查看新密钥的公钥内容

将新密钥文件上传到救援机器执行:ssh-keygen -y -f xxx.pem  输出信息就是公钥保存好

3.挂载原系统根分区

sudo mkdir -p /mnt/recovery

lsblk  查看分区,比如分区是 /dev/nvme1n1p1

mount /dev/nvme1n1p1 /mnt/recovery  挂载分区到刚才创建的目录。这一步不报错就可以看到之前机器的磁盘数据了。

df -h

4.把新公钥写入原系统

如果原实例是 Ubuntu:

sudo mkdir -p /mnt/recovery/home/ubuntu/.ssh

sudo vim /mnt/recovery/home/ubuntu/.ssh/authorized_keys

如果原实例是 Amazon Linux / CentOS:

sudo mkdir -p /mnt/recovery/home/ec2-user/.ssh

sudo vim /mnt/recovery/home/ec2-user/.ssh/authorized_keys

把新公钥追加进去,不要删原有内容。

5.修正权限

ls -l /mnt/recovery/home/ubuntu/.ssh  查看是否为700

ls -l /mnt/recovery/home/ubuntu/.ssh/authorized_keys  此文件必须为600

如果权限不对执行以下命令授权

sudo chmod 700 /mnt/recovery/home/ubuntu/.ssh

sudo chmod 600 /mnt/recovery/home/ubuntu/.ssh/authorized_keys

sudo chown -R 1000:1000 /mnt/recovery/home/ubuntu/.ssh  但 uid/gid 不一定固定,最稳的是先看原系统用户 UID,或是改成原有用户的权限

#查看原用户ID

sudo grep ec2-user /mnt/recovery/etc/passwd  

sudo grep ubuntu /mnt/recovery/etc/passwd   例如返回:ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash 那就用1000

6.卸载并挂回原实例

救援机 sudo umount /mnt/recovery 再关机,分离旧机器的磁盘

将分离的问题机器卷再附加到原来的问题机器上,然后开机使用新密钥连接即可。



WhatsApp
Telegram
Email