丢失私有密钥时连接到虚拟机(2)

原理和丢失私有密钥时连接到虚拟机(1)是一样的,从镜像创建的虚拟机我们也可以将其挂载到别的机器上,只是需要的命令不同。

##具体步骤

  • 关闭你的虚拟机
  • 找到你的虚拟机的id,类似282d0355-a4db-4467-a70b-4783ac2c7ed6这样一串数字
  • 找到你的虚拟机的宿主机,登录到宿主机上
  • 进入到存放虚拟机文件的目录

    cd /var/lib/nova/instances/{id}
    

    这里的id就是你上面虚拟机的id
    这个目录下的内容是这样的

    .
    ├── console.log
    ├── disk
    ├── disk.info
    ├── libvirt.xml
    

    这里的disk文件就是我们要操作的对象

  • 在当前目录下创建sysroot目录

    mkdir sysroot
    
  • 挂载disk文件到本机

    guestmount -a disk --rw -m /dev/sda1  sysroot
    

    Note:如果你是ubuntu的系统,guestmount会报错如下:

    libguestfs: error: /usr/bin/supermin-helper exited with error status 1.
    To see full error messages you may need to enable debugging.
    See http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs
    

    这个时候你可以执行:

    update-guestfs-appliance
    
  • 进入sysroot并把它当作当前进程的根文件系统

    cd sysroot; chroot .
    
  • 现在就可以修改虚拟机的文件啦!

  • 修改完成后,exit退出chroot的环境

    exit
    cd ..  #回到上一级目录
    umount sysroot
    
  • 启动虚拟机即可