一、LibVirt简介

Libvirt是用于管理虚拟化平台的开源的API,后台程序和管理工具。它可以用于管理KVM、Xen、VMware ESX,QEMU和其他虚拟化技术。这些API在云计算的解决方案中广泛使用。一般直接使用virsh命令进行操作。

二、如何使用远程连接

(1)修改LibVirt服务端的配置文件/etc/libvirtd.conf,修改以下配置项

listen_tcp = 1
tcp_port = "16509"

(2)重新启动LibVirt服务端

service libvirtd restart

(3)接下来就可以使用tcp来远程连接了,在任何一个安装了LibVirt客户端的机器上即可远程连接到LibVirt服务端,以下给出CentOS系统下安装LibVirt客户端的命令,或者使用安装包的方式进行安装:

yum install libvirt-client
yum install cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi  cyrus-sasl-md5  #在开启了sasl认证之后才需要执行此命令

(4)通过tcp远程连接:

virsh -c qemu+tcp://192.168.2.2:16509/system

三、LibVirt服务端开启密码认证(SASL方式)

(1)使用saslpasswd2给LibVirt应用创建一个用户

saslpasswd2 -a libvirt your_user_name
Password: xxxxxx
Again (for verification): xxxxxx

(2)查看sasl给LibVirt创建的用户

sasldblistusers2 -f /etc/libvirt/passwd.db

修改LibVirt服务端的配置文件/etc/libvirt/libvirtd.conf

auth_tcp = "sasl"
#auth_tls = "none"   #tls认证,修改同tcp

(3)重新启动LibVirt服务端

service libvirtd restart

(4)接下来通过tcp连接就需要输入用户名密码了

四、LibVirt服务端开启tls

(1)服务端开启tls,需要在服务端依次生成文件cakey.pem,cacert.pem,serverkey.pem,servercert.pem,clientkey.pem,clientcert.pem文件,参考链接:https://libvirt.org/tlscerts.html:

#创建一个目录,用于存放需要生成的文件
mkdir /opt/ssl_generate && cd /opt/ssl_generate
#生成cakey.pem
certtool --generate-privkey > cakey.pem
#创建自签名描述文件ca.info
cat > ca.info <<EOF
cn = Name of your organization
ca
cert_signing_key
EOF
#生成cacert.pem
certtool --generate-self-signed --load-privkey cakey.pem --template ca.info --outfile cacert.pem
#生成serverkey.pem
certtool --generate-privkey > serverkey.pem

#生成自签名描述文件server.info,注意,The 'cn' field should refer to the fully qualified public hostname of the server
cat > server.info <<EOF
organization = CG
cn = CG
tls_www_server
encryption_key
signing_key
EOF
#生成servercert.pem文件
certtool --generate-certificate --load-privkey serverkey.pem \
  --load-ca-certificate cacert.pem --load-ca-privkey cakey.pem \
  --template server.info --outfile servercert.pem
#clientkey.pem和clientcert.pem文件的生成类似,不再赘述
#将文件cacert.pem文件复制到目录/etc/pki/CA/cacert.pem
cp cacert.pem /etc/pki/CA/cacert.pem
#将文件serverkey.pem文件复制到目录/etc/pki/libvirt/private/serverkey.pem
cp serverkey.pem /etc/pki/libvirt/private/serverkey.pem
#将文件servercert.pem文件复制到/etc/pki/libvirt/servercert.pem
cp servercert.pem /etc/pki/libvirt/servercert.pem

(2)修改服务端的配置文件/etc/libvirtd.conf文件,并重启服务端

listen_tls = 1

(3)将cacert.pem,clientkey.pem,clientcert.pem这3个文件复制到客户机上,并通过tls连接,其中url参数pkipath就是存放这3个文件的目录

virsh -c qemu+tls://188.188.77.131:16514/system?pkipath=/opt/ssl_client

(4)如果在服务器端关闭认证,即在/etc/libvirt/libvirtd.conf文件中将配置项“tls_no_verify_certificate = 1”的注释放开,再重启服务端,则客户机上只需要cacert.pem文件即可

五、虚拟机安装qemu-guest-agent

(1)虚拟机安装了qemu-guest-agent之后,在宿主机上运行以下命令即可获取虚拟机的ip

virsh qemu-agent-command VMNAME '{"execute":"guest-network-get-interfaces"}'

(2)Linux系统安装qemu-guest-agent

  • 创建了一台CentOS7.0系统的虚拟机,创建完成之后自动运行了qume-guest-agent,并不需要手动安装

(3)Windows系统安装qemu-guest-agent

  • 首先要安装virt-io,virt-io下载地址:https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.190-1/
  • 然后安装qemu-guest-agent,安装文件在iso文件的guest-agent目录下