使用 guestfish 修改 qcow2 镜像文件中的 root 密码,时区等


下载 CentOS-Stream-8 qcow2 镜像文件

curl -O https://cloud.centos.org/centos/8-stream/x86_64/images/CentOS-Stream-GenericCloud-8-20220125.1.x86_64.qcow2

sha256sum

SHA256 (CentOS-Stream-GenericCloud-8-20220125.1.x86_64.qcow2) = a25560ab39e10594ee7a4a1dadcba7bf303b7c3c41559b4a7fc3c522540a6672

在宿主上通过 openssh 命令生成加密密码,如:

[root@172-16-20-18 ~]# openssl passwd -1 123456
$1$C7lylF/z$zl7lH47UASlC2tJhO.BGx0

使用 guestfish 进入交互命令界面后依次执行run、list-filesystems、mount等指令

[root@172-16-20-18 wangrui]# guestfish --rw -a CentOS-Stream-GenericCloud-8-20220125.1.x86_64.qcow2

Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.

Type: ‘help’ for help on commands
      ‘man’ to read the manual
      ‘quit’ to quit the shell

> run
> list-filesystems
/dev/sda1: xfs
> mount /dev/sda1 /
>

编辑 /etc/shadow,修改 root 用户密码

> vi /etc/shadow

内容如下:

root:!!:19017:0:99999:7:::
bin:*:18397:0:99999:7:::
daemon:*:18397:0:99999:7:::
adm:*:18397:0:99999:7:::
lp:*:18397:0:99999:7:::
sync:*:18397:0:99999:7:::
shutdown:*:18397:0:99999:7:::
halt:*:18397:0:99999:7:::
mail:*:18397:0:99999:7:::
operator:*:18397:0:99999:7:::
games:*:18397:0:99999:7:::
ftp:*:18397:0:99999:7:::
nobody:*:18397:0:99999:7:::
dbus:!!:19017::::::
systemd-coredump:!!:19017::::::
systemd-resolve:!!:19017::::::
tss:!!:19017::::::
polkitd:!!:19017::::::
unbound:!!:19017::::::
rpc:!!:19017:0:99999:7:::
sssd:!!:19017::::::
setroubleshoot:!!:19017::::::
rpcuser:!!:19017::::::
cockpit-ws:!!:19017::::::
cockpit-wsinstance:!!:19017::::::
chrony:!!:19017::::::
sshd:!!:19017::::::
rngd:!!:19017::::::

将第一行两个 ":" 之间的内容替换加密密码

$1$C7lylF/z$zl7lH47UASlC2tJhO.BGx0

完了第一行的内容为:

root:$1$C7lylF/z$zl7lH47UASlC2tJhO.BGx0:19017:0:99999:7:::

保存退出

重新生成时区软连接

> rm /etc/localtime
> ln /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

编辑 rc.local 设置 sshd_config 配置

> vi /etc/rc.local

增加如下内容:

sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
systrmctl restart sshd

授予可执行权限

> chmod 0755 /etc/rc.local

quit 退出

> quit

完了就可以上传 qcow2 到 openstack 投递虚拟机或者直接本地使用 virsh 启动 kvm 虚拟机,如:

virt-install \
--virt-type kvm \
--name CentOS-Stream-GenericCloud-8-20220125.1.x86_64 \
--memory 4096 \
--vcpus 2 \
--import \
--hvm \
--disk CentOS-Stream-GenericCloud-8-20220125.1.x86_64.qcow2,size=50 \
--bridge=br1 \
--graphics vnc,listen=0.0.0.0 \
--video vga \
--noautoconsole \
--os-type=linux \
--os-variant=centos8

开启 vnc 使用 vncviewer 进行验证

virsh vncdisplay CentOS-Stream-GenericCloud-8-20220125.1.x86_64