首页 > 系统相关 >清除openstack导出的qcow2格式的Windows16镜像的管理员密码

清除openstack导出的qcow2格式的Windows16镜像的管理员密码

时间:2024-10-15 11:23:30浏览次数:7  
标签:std 20231025 -- qcow2 Windows16 ecs openstack root

由于公司使用的openstack版本太老,无法使用cloudbase-init传递元数据修改win16镜像的管理员密码,所以琢磨其它办法,搞了一个星期。

原理:使用kpartx挂载镜像,然后使用chntpw清空密码,并修改cloudbase-init配置文件里的重置密码选项。

准备环境

系统:centos7.5 磁盘80G(转换win16镜像由qcow2为raw时,占了40G磁盘)

kvm 相关环境(使用win16镜像跑一个虚拟机测试administrator密码是否清除)

kpartx 及其他软件包(映射raw格式的镜像)

chntpw 修改win16镜像的administrator密码

一、安装kvm相关环境

1.检测是否支持KVM

1 cat /proc/cpuinfo | egrep 'vmx|svm'

2、安装相关软件包

  • qemu-kvm 主要的KVM程序包
  • python-virtinst 创建虚拟机所需要的命令行工具和程序库
  • virt-manager GUI虚拟机管理工具
  • virt-top 虚拟机统计命令
  • virt-viewer GUI连接程序,连接到已配置好的虚拟机
  • libvirt C语言工具包,提供libvirt服务
  • libvirt-client 为虚拟客户机提供的C语言工具包
  • virt-install 基于libvirt服务的虚拟机创建命令
  • bridge-utils 创建和管理桥接设备的工具
 1 yum -y install qemu-kvm libvirt python-virtinst virt-install virt-manager virt-top virt-viewer libvirt-client bridge-utils 
 2 # 重启宿主机,以便加载 kvm 模块
 4 reboot
 5 # 查看KVM模块是否被正确加载
 6 [root@localhost opt]# lsmod | grep kvm
 7 kvm_intel             174841  0 
 8 kvm                   578518  1 kvm_intel
 9 irqbypass              13503  1 kvm
11 # 开启kvm服务,并且设置其开机自动启动
12 systemctl start libvirtd
13 systemctl enable libvirtd

二、安装kpartx 及其他软件包

yum install kpartx ntfs-3g libguestfs-winsupport libguestfs-tools libguestfs

三、安装chntpw

wget https://ftp.nluug.nl/pub/os/Linux/distr/pclinuxos/pclinuxos/apt/pclinuxos/64bit/RPMS.x86_64/chntpw-0.99.6-2pclos2017.x86_64.rpm
rpm -ivh chntpw-0.99.6-2pclos2017.x86_64.rpm

四、上传win16镜像修改密码

1.上传openstack导出的 ecs-windows2016_std-x64-20231025.qcow2 镜像

1 [root@localhost ~]# ll -lh /opt/
2 -rw-r--r-- 1 root root 7.4G Oct 14 19:05 ecs-windows2016_std-x64-20231025.qcow2

2.把win16镜像由qcow2 转 raw

# kpartx 可以映射 raw 格式镜像,无法映射 qcow2 格式镜像,所以先转换格式
qemu-img convert -f qcow2 -O raw ecs-windows2016_std-x64-20231025.qcow2 ecs-windows2016_std-x64-20231025.raw
# 转换后的raw格式文件相当于把qcow2镜像解压了,占了40G空间,所以虚拟机的磁盘空间要准备大一点 [root@localhost ~]# ll -lh /opt/ -rw-r--r-- 1 root root 7.4G Oct 14 19:05 ecs-windows2016_std-x64-20231025.qcow2 -rw-r--r-- 1 root root 40G Oct 15 00:11 ecs-windows2016_std-x64-20231025.raw

3.映射 win2016镜像

[root@localhost opt]# kpartx -av ecs-windows2016_std-x64-20231025.raw
add map loop1p1 (253:0): 0 1024000 linear /dev/loop1 2048
add map loop1p2 (253:1): 0 82857984 linear /dev/loop1 1026048

4.挂载win16系统的C盘,一般C盘在loop0p2下面

mount /dev/mapper/loop0p2 /mnt/

5.进入C盘,备份win16系统的用户密码文件

[root@localhost opt]# cd /mnt/Windows/System32/config
[root@localhost config]# cp SAM SAM.bak

6.清空windows的administrator管理员密码

[root@localhost config]# chntpw SAM
chntpw version 0.99.6 110511 , (c) Petter N Hagen
Hive <SAM> name (from header): <\SystemRoot\System32\Config\SAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 686c <lh>
File size 65536 [10000] bytes, containing 8 pages (+ 1 headerpage)
Used for data: 329/28096 blocks/bytes, unused: 37/12608 blocks/bytes.


* SAM policy limits:
Failed logins before lockout is: 5
Minimum password length        : 8
Password history count         : 8
| RID -|---------- Username ------------| Admin? |- Lock? --|
| 01f4 | Administrator                  | ADMIN  | *BLANK*  |
| 03ea | cloudbase-init                 | ADMIN  |          |
| 01f7 | DefaultAccount                 |        | dis/lock |
| 01f5 | Guest                          |        | dis/lock |

---------------------> SYSKEY CHECK <-----------------------
SYSTEM   SecureBoot            : -1 -> Not Set (not installed, good!)
SAM      Account\F             : 0 -> off
SECURITY PolSecretEncryptionKey: -1 -> Not Set (OK if this is NT4)
Syskey not installed!

RID     : 0500 [01f4]
Username: Administrator # 确认修改的管理员
fullname: 
comment : ¡¡:(ݩn7
homedir : 

User is member of 1 groups:
00000220 = Administrators (which has 2 members)

Account bits: 0x0210 =
[ ] Disabled        | [ ] Homedir req.    | [ ] Passwd not req. | 
[ ] Temp. duplicate | [X] Normal account  | [ ] NMS account     | 
[ ] Domain trust ac | [ ] Wks trust act.  | [ ] Srv trust act   | 
[X] Pwd don't expir | [ ] Auto lockout    | [ ] (unknown 0x08)  | 
[ ] (unknown 0x10)  | [ ] (unknown 0x20)  | [ ] (unknown 0x40)  | 

Failed login count: 0, while max tries is: 5
Total  login count: 88
** No NT MD4 hash found. This user probably has a BLANK password!
** No LANMAN hash found either. Sorry, cannot change. Try login with no password!

- - - - User Edit Menu:
 1 - Clear (blank) user password
 2 - Edit (set new) user password (careful with this on XP or Vista)
 3 - Promote user (make user an administrator)
(4 - Unlock and enable user account) [seems unlocked already]
 q - Quit editing user, back to user select
Select: [q] > 1 # 选择1 清空密码
Password cleared!

Hives that have changed:
 #  Name
 0  <SAM>
Write hive files? (y/n) [n] : y # 将修改写入配置文件
 0  <SAM> - OK

五.取消cloudbase-init 的重设密码

1.进入clodbase-init配置文件目录

[root@localhost config]# cd /mnt/Program\ Files/Cloudbase\ Solutions/Cloudbase-Init/conf/
[root@localhost conf]# ls
cloudbase-init.conf  cloudbase-init.conf.bak  cloudbase-init-unattend.conf  Unattend.xml

2.注释掉cloudbase-init.conf配置文件里的username、groups、inject_user_password三行

[root@localhost conf]# head cloudbase-init.conf
[DEFAULT]
#username=Administrator
#groups=Administrators
#inject_user_password=true

重点说明:

inject_user_password 这个配置选项用来在openstack里创建实例时使用cloudbase-init通过元数据设置密码
如果没有使用元数据提供密码,则cloudbase-init会设置一个随机密码,这个随机密码就会覆盖掉上面chntpw工具清空的administrator管理员密码。

所以只用chntpw清空了密码后,在openstack里创建虚拟机后administrator账号登录提示一直密码错误,原来是被cloudbase-init设置了一个随机密码。

这一步卡了3、4天,然后在cloudbase-init官网和一个博客里发现了这个配置的详细说明。

 如果没有提供密码就设置一个随机密码

cloudbase-init官方文档链接https://cloudbase-init.readthedocs.io/en/latest/config.html

3. 卸载镜像

umount /mnt/

4.取消映射

kpartx -dv ecs-windows2016_std-x64-20231025.raw

5.raw转qcow2

qemu-img convert -f raw -O qcow2 ecs-windows2016_std-x64-20231025.raw ecs-windows2016_std-x64-20231025_admin_pass.qcow2
转换后的qcow2有17G,需要进行压缩
[root@localhost opt]# ll -lh
-rw-r--r-- 1 root root 17G Oct 15 02:18 ecs-windows2016_std-x64-20231025_admin_pass.qcow2
-rw-r--r-- 1 root root 7.4G Oct 14 19:05 ecs-windows2016_std-x64-20231025.qcow2
-rw-r--r-- 1 root root 40G Oct 15 02:02 ecs-windows2016_std-x64-20231025.raw

6.压缩win2016镜像

qemu-img convert -c -O qcow2 ecs-windows2016_std-x64-20231025_admin_pass.qcow2 ecs-windows2016_std-x64-20231025_admin_pass_new.qcow2

压缩后只有7.4G

[root@localhost opt]# ll -lh
total 46G
-rw-r--r-- 1 root root 7.4G Oct 15 00:24 ecs-windows2016_std-x64-20231025_admin_pass_new.qcow2
-rw-r--r-- 1 root root  17G Oct 15 02:18 ecs-windows2016_std-x64-20231025_admin_pass.qcow2
-rw-r--r-- 1 root root 7.4G Oct 14 19:05 ecs-windows2016_std-x64-20231025.qcow2
-rw-r--r-- 1 root root  40G Oct 15 02:02 ecs-windows2016_std-x64-20231025.raw

六、测试

1.使用kvm创建虚拟机

# 创建windows虚拟机
virt-install --name win16 \
--virt-type kvm \
--ram 8048 \
--import \
--disk path=/opt/ecs-windows2016_std-x64-20231025_admin_pass.qcow2 \
--network bridge=virbr0 \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole

2.使用VNCviewer连接windows测试

3.使用administrator登录win16,如果不需要密码,则成功

4.使用openstack创建虚拟机测试win16镜像运行了cloudbase-init初始化,再使用administrator登录系统,不需要密码则成功

参考文档

CentOS7安装KVM虚拟机详解 handbook (wangchujiang.com)

OpenStack 镜像修改密码_windows raw 重置密码-CSDN博客

配置选项参考 — cloudbase-init 1.1.7 文档

标签:std,20231025,--,qcow2,Windows16,ecs,openstack,root
From: https://www.cnblogs.com/huangxiaoxue/p/18467065

相关文章

  • openstack hypervisor
    openstackhypervisorhttps://docs.redhat.com/en/documentation/red_hat_openstack_platform/8/html/configuration_reference_guide/section_compute-hypervisors#kvm-intelRedHatOpenStackPlatformisonlysupportedforusewiththelibvirtdriver(usingKVMas......
  • 云计算Openstack Nova
    OpenStackNova是OpenStack云计算平台中的一个核心组件,主要负责管理和部署虚拟机实例。以下是对OpenStackNova的详细解析:一、定义与功能定义:OpenStackNova是一个计算服务组件,它提供了虚拟机实例的创建、启动、暂停、恢复、删除等功能,并支持对实例进行资源调度、监控和管......
  • CentOS7.4安装部署openstack [Liberty版] (一)
    一、OpenStack简介OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简......
  • CentOS7.4安装部署openstack [Liberty版] (二)
    继上一篇博客CentOS7.4安装部署openstack[Liberty版](一),本篇继续讲述后续部分的内容一、添加块设备存储服务1.服务简述:OpenStack块存储服务为实例提供块存储。存储的分配和消耗是由块存储驱动器,或者多后端配置的驱动器决定的。还有很多驱动程序可用:NAS/SAN,NFS,ISCSI,Ceph等等。块存......
  • OpenStack基础平台部署案例
    OpenStack基础平台部署案例案例描述本案例是讲述如何使用云主机搭建OpenStack云平台。包括两种搭建的方式,一种是直接执行脚本安装,另一种是使用Ansible安装。使用这种方式,不需要重复安装系统去搭建平台,只需要创建云主机去构建OpenStack云平台,使用云主机去练习相应的操作。案......
  • 基于DPU的OpenStack裸金属服务快速部署及存储解决方案
    1方案背景和挑战Openstack作为开源云计算领域的领军项目,凭借其强大的功能、灵活的架构以及活跃的社区支持,在全球范围内得到了广泛的采用。通过Openstack,企业和云服务提供商可以更加高效地管理和利用计算资源、存储资源和网络资源,实现业务的快速部署和灵活扩展,从而赢得市场竞争的先......
  • OpenStack的组件及工作原理
    OpenStack就是一个虚拟化管理平台吗?这样说并不准确。它们存在很多相似性,但并非完全相同。的确,OpenStack和虚拟化管理平台都位于虚拟化资源层之上,都可以帮助用户发现、报告和自动执行位于不同供应商产品环境中的业务流程。但虚拟化管理平台主要是方便利用虚拟资源的特性和功能,而O......
  • openstack-cinder
    cinder概念cinder是OpenStack块存储服务,它的主要功能包括:卷管理:cinder可以创建,删除,扩容和缩小卷。管理员可以通过api或者命令行接口创建卷,指定卷的大小,类型,名称和描述等信息。当需要扩容或缩小卷时,管理员可以通过api或者命令行接口进行操作。卷快照:cinder支持卷的快照,......
  • openstack-swift
    对象存储swift对象存储是一种用于存储和管理大量数据的系统。类似于一个超大云盘。可以存储各种文件。(照片,视频,文档等等)。与传统的文件存储不同,对下个存储不关心文件的目录结构和层级关系,而是将每个文件视为一个独立的对象(Object).每个对象都有一个唯一的标识符,我们可以通过这......
  • 使用脚本部署openstack平台
    一、案例分析1.部署架构一台控制节点和一台计算节点组成简单架构OpenStack平台,控制节点安装MySQL、Keystone、Glance、Nova、Neutron、Dashboard等服务,主要作为认证、镜像管理节点,以及提供Nova和Neutron服务的管理节点。提供Dashboard界面服务。计算节点主要安装nova-comput......