KVM--使用SSH和SASL认证进行libvirt远程管理(十九)

2022-11-19 09:34:05 浏览数 (2)

libvirt远程管理

远程管理涉及对KVM主机上的虚拟资源(存储和虚拟机)进行远程管理。当将虚拟环境管理工作委派给其他用户,而又不授予对方KVM虚拟化管理程序登入访问权时,远程管理非常有用。libvirtd daemon负责管理KVM主机上所有的虚拟资源,并且有virsh和virt-manager等客户端工具能与它远程互动。

SASL和SSH认证进行libvirt远程管理

  • SSH通道(SSH Tunnels)
  • 简单鉴权和安全层(Simple Authentication and Security Layer,SASL )

1,SSH 通道:使用SSH 来远程连接虚拟化管理程序,对于能够使用虚拟资源的用户,要求具备虚拟化管理程序上的SSH登录证书,默认情况下只有root账户

代码语言:javascript复制
[root@kvm-node2 ~]#  virsh -c qemu ssh://root@192.168.100.235/system list --all
 Id    Name                           State
----------------------------------------------------
 5     9d5e23c04a                     running
 -     docker01                       shut off
 -     vm01                           shut off

[root@kvm-node2 ~]#  virsh -c qemu ssh://root@192.168.100.235/system domblklist 9d5e23c04a
Target     Source
------------------------------------------------
vda        /kvm/img/9d5e23c04a.qcow2
vdb        /kvm/img/9d5e23c04a-vdb.qcow2
hda        -

2,SASL:提供安全的验证和数据加密。最简单的方式创建单独的用户证书数据库来验证libvirtd daemon。优势在于即非登录用户ID可用于管理KVM主机上的虚拟化资源。

(1)编辑 /etc/libvirt/libvirtd.conf 并更改

代码语言:javascript复制
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
listen_addr = "0.0.0.0"
auth_tcp = "sasl"
auth_tls = "sasl"

(2)编辑 /etc/sysconfig/libvirtd 并取消此行的批注,以使libvirtd听取TCP/IP连接

代码语言:javascript复制
LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf
LIBVIRTD_ARGS="--listen"

(3)添加sasl2配置,注释其他行,设置加密方式 /etc/sasl2/libvirt.conf

代码语言:javascript复制
# egrep -v "*#|^$" /etc/sasl2/libvirt.conf 
mech_list:digest-md5
sasldb_path: /etc/libvirt/passwd.db

(4)重启libvirtd 服务

代码语言:javascript复制
   systemctl restart libvirtd

(5)将用户 "admin" 添加到 "libvirt" SASL数据库

代码语言:javascript复制
   saslpasswd2 –c –a libvirt admin
   Password:
   Again (for verification):

注意:只有输入libvirt才会使用配置/etc/sasl2/libvirt.conf,结果才会写到/etc/libvirt/passwd.db

(6)删除账户

代码语言:javascript复制
saslpasswd2 -a libvirt -d admin

(7)查看账户

代码语言:javascript复制
sasldblistusers2 -f /etc/libvirt/passwd.db
admin@kvm-node2: userPassword

(8)qemu tcp安全地连接KVM虚拟化管理程序

代码语言:javascript复制
root@kvm-node2 libvirt]# virsh -c qemu tcp://192.168.100.235/system list 
Please enter your authentication name: admin
Please enter your password: 
 Id    Name                           State
----------------------------------------------------
 5     9d5e23c04a                     running
[root@kvm-node2 libvirt]# virsh -c qemu tcp://192.168.100.235/system nodeinfo
Please enter your authentication name: admin
Please enter your password: 
CPU model:           x86_64
CPU(s):              2
CPU frequency:       2099 MHz
CPU socket(s):       2
Core(s) per socket:  1
Thread(s) per core:  1
NUMA cell(s):        1
Memory size:         8009288 KiB

SSH 通道和SASL可用于运行任何virsh命令。

0 人点赞