更改/删除 .qcow2 虚拟化中的密码

更改/删除 .qcow2 虚拟化中的密码

我从 cloud.centos.org 下载了一个 .qcow2 映像,并一直在尝试更改密码,以便在加载到虚拟环境中时可以登录它。我尝试使用 virt-edit 编辑 /etc/shadow:

virt-edit -a CentOS-6-x86_64-GenericCloud-1604.qcow2 /etc/shadow

我尝试首先使用生成密码openssl passwd -l并将其放在那里,当这不起作用时,我尝试从另一台计算机复制加密密码,但这也不起作用。然后我尝试编辑 /etc/passwd 并删除“x”,据我了解,这将允许我无需密码即可登录:

root::0:0:root:/root:/bin/bash

但这也不起作用。我验证了 console 和 tty 通过 tty11 位于 /etc/securetty 中,但我不确定从这里去哪里。

编辑:virt-customize -a CentOS-6-x86_64-GenericCloud-1603.qcow2 --root-password password:password也不起作用。

答案1

当您进行编辑时,虚拟机是否已经在运行?

“不起作用”是什么意思:虚拟机是否已切换至单用户模式,或者只是拒绝您的登录?

请注意,CentOS 很可能启用了 SELinux,因此您需要touch /.autorelabel对 VM 的根文件系统执行等效操作,以便在修改后 VM 启动时触发 SELinux 重新标记。例如:

touch .autorelabel
virt-copy-in -a CentOS-6-x86_64-GenericCloud-1603.qcow2 .autorelabel /

另请注意,该图像包括/etc/cloud/cloud.cfg,这表明它已配备cloud-init,及其配置(使用 查看virt-cat -a CentOS-6-x86_64-GenericCloud-1603.qcow2 /etc/cloud/cloud.cfg):

users:
 - default

disable_root: 1    <--- this might be the root cause of your troubles!
ssh_pwauth:   0
[...]

我尝试virt-customize --uninstall cloud-init按照其他地方的建议在图像上运行,但这对我不起作用。也许 CentOS 6 太旧了,无法在映像中进行包操作,至少使用我当前安装的工具是这样?

/etc/init.d/cloud-config无论如何,您可能可以通过使用刚刚退出的脚本覆盖虚拟机内的、和/etc/init.d/cloud-final来暴力禁用它,然后一旦虚拟机运行并可访问,就在虚拟机内运行?/etc/init.d/cloud-init/etc/init.d/cloud-init-localyum erase cloud-init

相关内容