问题描述

某天, 因为其他项目组交接问题, kvm里面的堡垒机系统用户root密码登录不上,然后他通过宿主机修改/etc/shadow文件修改密码,但是修改完后重启系统后发现kvm宿主机连接不上虚机了, 而且ssh也连接不上, 内部IP都ping不通,然后找到这边看有没有办法不重装系统解决这个问题, 因为是堡垒机, 策略,数据,也没备份, 错误一直卡在下面信息:

console test
Connected to domain test
Escape character is ^] /*
初步判断:
1. 可能系统没起来,卡在某一个启动步骤
2. 内部网卡分配IP,网卡,网络冲突有问题
3. 内部服务因为重启系统,服务之间依赖冲突,导致系统起不来.
*/

解决报错1 Escape character is ^]

正常一般回车就能进入登录界面,不行的话试下面步骤

如果出现上面字符串使用 CTRL+Shift+5 CTRL+Shift+]

  1. ERROR Format cannot be specified for unmanaged storage.

    virt-manager 没有找到存储池,创建储存池即可

  2. KVM VNC客户端连接闪退

    使用real vnc或者其它vnc客户端连接kvm闪退,把客户端设置中的ColourLevel值设置为rgb222或full即可

  3. virsh shutdown 无法关闭虚拟机

    使用该命令关闭虚拟机时,KVM是向虚拟机发送一个ACPI的指令,需要虚拟机安装acpid服务:

  4. operation failed: Active console session exists for this domain

# 方案1
$ ps aux | grep console
$ kill -9 <进程号>
# 方案2
$ /etc/init.d/libvirt-bin restart
# 方案3
$ ps aux | grep kvm
$ kill 对应的虚拟机进程
小结
`上面方法试过了,还是卡在这个界面,我开始细问那边改/etc/shadow文件, 问他是怎么改的,我把步骤故障看能不能复现一遍, 我这边重新弄一个Kvm和虚机`

解决报错2 kvm修改虚拟机密码

安装libguestfs-tools
 yum install libguestfs-tools
生成新的密码串
openssl passwd -1 -salt 'root' '123'
$1$hello$ZwmhCpcG.I1XIfVjdarKc1 # openssl是一个加密工具,-1 是指普通加密;
# root为key ,123456 才是密码,下面就是是生成的密码串,这样我们只要将这些进行对应的替换掉可以了

当时那边生成密码串时候因为看到别人博客上写的是hello,说这个是key,没想到用户名,也跟着别人写了,下面是那边项目当初生成密码串参考的文档截图

`建议: 参考网上文档, 如果是你不能肯定成功的操作, 建议先在测试环境或者自己虚拟机,云服务器上做一下看看, 能成功再去生产环境操作`
linux系统的加密密码通畅存储在/etc/shadow文件中
root:$1$bTPRDWwf$LpjUZmGTHw.hYFccl0/lK.:16804:0:99999:7:::
bin:*:15937:0:99999:7:::
daemon:*:15937:0:99999:7:::
adm:*:15937:0:99999:7:::
lp:*:15937:0:99999:7:::
sync:*:15937:0:99999:7:::
shutdown:*:15937:0:99999:7:::
修改root账户密码
virt-edit -d centos7 /etc/shadow
root:$1$bTPRDWwf$LpjUZmGTHw.hYFccl0/lK.:16804:0:99999:7:::
# 更换为
root:$1$hello$ZwmhCpcG.I1XIfVjdarKc1:16541:0:99999:7:::
小结

以上操作是我亲测并且成功的操作, 因为那边用户名写错了,然后将写错的加密字符串写到/etc/shadow导致系统一直卡在上面那个信息, 但是这个操作我在我自己服务器上测试系统已经是可以起来的,但他的却不行, 因为他们kvm的虚机都是通过ssh连接的, 没有弄console连接,而如果内部虚拟机网卡,网络冲突有问题的话, ssh也是连接不上的,容易混淆是网络问题连接不上还是系统没起来连接不上 所以我们先让他能console连接, console即便虚拟机网络有问题,没网卡,也可以连接进去,

解决报错3 Centos 7.x版本console登录

// 查看宿主机,也有相同的IP地址,因为这块网卡的存在,才能使用ssh远程连接到虚拟机

下面操作仅限centos7,网上很多操作都是centos6的, 6和7是不一样的,切记

// centos7的kvm虚拟机下执行下面操作
cp /etc/grub2.cfg /tmp
grubby --update-kernel=ALL --args="console=ttyS0,115200n8" -----> 使用命令直接插入 // diff比较 // reboot // 宿主机使用virsh console [虚拟机名字] w
// ttys0是终端的名字,和配置时候的参数一致,后面内容为频率(串口的频率,交换机的内容)
`上面操作是需要进入到虚拟机里面执行命令,从而达到修改grub2.cfg, 但我们没法进入系统`

`我们可以将其他虚机生成的可以console的配置, 写到系统起不来的那台虚机上`

`通过上面操作的确是可行的, 系统也进去到登录界面,可以排除系统起不来卡在某一个地方导致没IP连接不上, 是因为内部网卡原因.`

解决报错4 -- root: no shell: Permission denied

/*
因为kvm宿主机上的虚机里面的文件权限被莫名修改了,重启系统导致无法读取,缺少权限,一直卡在登录界面.
但是他的那个/etc/shadow,/etc/passwd的用户哪一行拿到其他虚机系统也是可以启动并且登录进去的,权限问题概率很大
但如何确定是什么文件,看下面 报错信息:
-- root: no shell: Permission denied
*/
首先确定这个权限拒绝说明很多文件权限都变了

前面的shell,我们可以去看下虚拟机/bin,/sbin, /usr/sbin等目录下文件是不是权限变了

确定/bin/bash权限

这个文件权限是下面这样, 但是正常这个文件是755的,或者不确定这个文件权限是多少,可以和正常启动的系统文件权限做对比

[root@kvm-47 ~]# virt-ls -l -d test1 /bin/bash
-rw-r-xr-x. 1 root root 960392 Aug 3 2016 /bin/bash
当确定这个权限被改了, 说不定其他文件也有很多改了,所以可以看一下/bin/*权限
[root@kvm-47 ~]# virt-ls -l -d test1 /bin/*
确定/usr/bin/bash权限
[root@kvm-47 ~]# virt-ls -l -d test1 /usr/bin/bash
-rwxr-xr-x. 1 root root 960392 Aug 3 2016 /usr/bin/bash
可以初步确定我们遇到的登陆报错是因为/bin/bash权限有问题

copy-in虚机需要关机

# 我们可以copy宿主机上正常权限的文件copy到虚机上
[root@kvm-47 ~]# virt-copy-in -d test1 /bin/bash /bin/
重启虚机
[root@kvm-47 ~]# virsh reboot test1
[root@kvm-47 ~]# virsh console test1
Connected to domain test1
Escape character is ^] CentOS Linux 7 (Core)
Kernel 3.10.0-1127.el7.x86_64 on an x86_64 jumpserver login: root
密码:
Last login: Fri Nov 6 14:59:25 on ttyS0
[root@jumpserver ~]# # 至此,我们系统虽然登录进来了,没有权限拒绝,但为了防止/bin/bash包不兼容系统,我们更新下 [root@jumpserver ~]# yum update bash # 重启
[root@jumpserver ~]# reboot
再次尝试登陆
# 再次连接,能进去,说明这个问题解决成功
[root@kvm-47 ~]# virsh console test
error: failed to get domain 'test'
error: Domain not found: no domain with matching name 'test' [root@kvm-47 ~]# virsh console test1
Connected to domain test1
Escape character is ^] CentOS Linux 7 (Core)
Kernel 3.10.0-1127.el7.x86_64 on an x86_64
[root@jumpserver ~]#

1

Centos7系统kvm虚机忘记密码进不去, 通过宿主机修改/etc/shadow文件改密码,重启后系统起不来故障排错的更多相关文章

  1. 启动第一个 KVM 虚机 - 每天5分钟玩转 OpenStack(4)

    本节演示如何使用 virt-manager 启动 KVM 虚机. 首先通过命令 virt-manager 启动图形界面 # virt-manager 点上面的图标创建虚机 给虚机命名为 kvm1,这里 ...

  2. KVM 介绍(8):使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 [Nova Libvirt QEMU/KVM Live Migration]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  3. 启动第一个 KVM 虚机

    本节演示如何使用 virt-manager 启动 KVM 虚机. 首先通过命令 virt-manager 启动图形界面 1 # virt-manager 点上面的图标创建虚机 给虚机命名为 kvm1, ...

  4. 远程管理 KVM 虚机 - 每天5分钟玩转 OpenStack(5)

    上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机.其实 virt-manager 也可以管理其他宿主机上的虚机.只需要简单的将宿主机添加进来 填入宿主机的相关信息,确定即 ...

  5. KVM 介绍(6):Nova 通过 libvirt 管理 QEMU/KVM 虚机 [Nova Libvirt QEMU/KVM Domain]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  6. KVM(六)Nova 通过 libvirt 管理 QEMU/KVM 虚机

    1. Libvirt 在 OpenStack 架构中的位置 在 Nova Compute 节点上运行的 nova-compute 服务调用 Hypervisor API 去管理运行在该 Hypervi ...

  7. 远程管理 KVM 虚机

    上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机.其实 virt-manager 也可以管理其他宿主机上的虚机.只需要简单的将宿主机添加进来 填入宿主机的相关信息,确定即 ...

  8. O005、远程管理 KVM 虚机

    参考https://www.cnblogs.com/CloudMan6/p/5256018.html   上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机,其实 virt ...

  9. O004、启动第一个KVM虚机

    参考https://www.cnblogs.com/CloudMan6/p/5249270.html   本节演示如何使用 virt-manager 启动 KVM 虚机,   提前下载一个 cirro ...

随机推荐

  1. python中的filter、map、reduce、apply用法总结

    1. filter 功能: filter的功能是过滤掉序列中不符合函数条件的元素,当序列中要删减的元素可以用某些函数描述时,就应该想起filter函数. 调用: filter(function,seq ...

  2. matlab做gaussian高斯滤波

    原文链接:https://blog.csdn.net/humanking7/article/details/46826105 核心提示 在Matlab中高斯滤波非常方便,主要涉及到下面两个函数: 函数 ...

  3. k8s的namespace一直Terminating的完美解决方案

    k8s的namespace一直Terminating的完美解决方案 在k8s集群中进行测试删除namespace是经常的事件,而为了方便操作,一般都是直接对整个名称空间进行删除操作. 相信道友们在进行 ...

  4. [KMP]字符串匹配算法

    算法介绍: KMP是一种用来处理字符串匹配问题的算法,给你两个字符串A.B,让你回答B是否为A的子串,或者A中有多少子串等于B. 这题最暴力的做法是:枚举A中与B相等的子串的左端点,再判断是否与B相等 ...

  5. Java工程师应该掌握的知识,按重要程度排出六个阶段如下

      第一阶段:计算机组成原理.数据结构和算法.网络通信原理.操作系统原理: 第二阶段:Java基础.JVM内存模型和GC算法.JVM性能调优.JDK工具.设计模式: 第三阶段:Spring系列.Myb ...

  6. mysql 操作数据库

    创建数据库 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name(数据库名字) #添加 IF NOT EXISTS,如果已有数据库,将会提醒,不会出现错 ...

  7. AT一万亿港元市值之差,腾讯和阿里到底“差”在哪里?

    很少有人注意到,港股之王已经悄然易主. 2019年底,阿里巴巴赴港二次上市,中国两大互联网巨头终于有了统一的比较口径,同台竞技之下,我们发现一个惊人事实--截止9月5日,港股阿里巴巴市值5.9万亿港元 ...

  8. filebeat- 配置

    wget https://mirrors.huaweicloud.com/filebeat/7.9.1/filebeat-7.9.1-linux-x86_64.tar.gz tar -zxvf fil ...

  9. linux(centos8):安装prometheus服务端/node_exporter客户端(prometheus 2.18.1)

    一,prometheus的用途 Prometheus是一个开源的系统监控和警报工具包 相比其他监控系统,它更适用于微服务的体系架构 它使用各种专用exporter,用来实现对硬件/存储/数据库/web ...

  10. centos8安装zookeeper(单机方式)

    一,下载zookeeper: 1,官网地址 http://zookeeper.apache.org/ 找到这个地址: https://mirrors.tuna.tsinghua.edu.cn/apac ...