Openstack Queen版本之guestfish修改centos7云镜像解决ssh无法连接VM实例

原因

用VirtualBox 以及Queen版本搭建 openstack, 创建了实例,用ssh怎么搞都不能够免密登陆进入创建的虚拟机,虽然可以ping通,所以打算尝试一下直接修改镜像ssh密码。

1.安装guestfish

apt-get install libguestfs-tools -y

2.打开镜像(前面一篇博客有提到下载和转换)

guestfish --rw -a CentOS-7-x86_64-GenericCloud-1907.qcow2

3.执行修改

><fs> run
><fs> list-filesystems
><fs> mount /dev/sda1 /
><fs> vi /etc/cloud/cloud.cfg
><fs> vi /etc/ssh/sshd_config 
><fs> vi /etc/shadow
><fs> quit 

修改1

/etc/cloud/cloud.cfg我修改了如下:

// 4,5行
disable_root:0   //允许root登陆
ssh_pwauth: 1    //ssh开启密码登陆
// 57行
lockpasswd: false
plain_text_passwd: "123456"  //添加

下图是原来的情况:
Openstack Queen版本之guestfish修改centos7云镜像解决ssh无法连接VM实例

Openstack Queen版本之guestfish修改centos7云镜像解决ssh无法连接VM实例

修改2

/etc/ssh/sshd_config 修改了如下,即允许管理员登陆
Openstack Queen版本之guestfish修改centos7云镜像解决ssh无法连接VM实例

修改3 /etc/shadow

需要先打开新的shell,然后输入

[root@controller ~]#  openssl passwd -1 123456
$1$.dtYmdL8$9yGo/gKaGWmJHwoIgJDVM/
[root@controller ~]# 

将root默认的随机密码替换成生成的加密密码,如下图所示
Openstack Queen版本之guestfish修改centos7云镜像解决ssh无法连接VM实例

问题1

><fs> run
libvirt: XML-RPC 错误 : 将插槽连接到 '/var/run/libvirt/libvirt-sock' 失败: 没有那个文件或目录
libguestfs: error: could not connect to libvirt (URI = qemu:///system): 将插槽连接到 '/var/run/libvirt/libvirt-sock' 失败: 没有那个文件或目录 [code=38 int1=2]

解决:因为libvirtd 没有启动,启动即可。

service libvirtd start

问题2

><fs> run
◓ 25% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒═════════════════════════════════════════════════════════⟧ --:--
libguestfs: error: could not create appliance through libvirt.

Try running qemu directly without libvirt using this environment variable:
export LIBGUESTFS_BACKEND=direct

Original error from libvirt: Cannot access storage file '/root/CentOS-7-x86_64-GenericCloud-1907.qcow2' (as uid:107, gid:107): 权限不够 [code=38 int1=13]
><fs> quit

解决:修改/etc/libvirt/qemu.conf,把user 和group的注释#去掉,

vim /etc/libvirt/qemu.conf

#       user = "100"    # A user named "100" or a user with uid=100
#
user = "root"

# The group for QEMU processes run by the system instance. It can be
# specified in a similar way to user.
group = "root"

重启服务

systemctl restart libvirtd

修改

[root@controller ~]#  openssl passwd -1 123456
$1$.dtYmdL8$9yGo/gKaGWmJHwoIgJDVM/

结果

用我们修改过的镜像,重新上传镜像,最终可以登陆到我们云平台建立的虚拟机,不过建立连接的过程会很缓慢,大概1-3分钟,等到你觉得不可能连上。。。

xshell centos登陆

Openstack Queen版本之guestfish修改centos7云镜像解决ssh无法连接VM实例

putty centos登陆

Openstack Queen版本之guestfish修改centos7云镜像解决ssh无法连接VM实例

root 登陆

Openstack Queen版本之guestfish修改centos7云镜像解决ssh无法连接VM实例

感谢以下博客的博主,非常好的学习参考。
利用guestfish工具修改openstack云镜像的root密码,默认用户centos的密码
上传镜像
修改openstack镜像--支持root密码登陆
Ubuntu16手动安装OpenStack——修改镜像

上一篇:Linux中如何克隆KVM虚拟机


下一篇:使用libvirt和kickstart安装Ubuntu 16.04