5.5. 设置对远程虚拟化主机的简单访问
当使用 libvirt 工具在远程主机系统上管理虚拟机时,建议使用 -c qemu+ssh://root@hostname/system
语法。例如,要在 192.0.2.1
主机上以 root 用户身份使用 virsh list
命令:
# virsh -c qemu+ssh://root@192.0.2.1/system list
root@192.0.2.1's password:
Id Name State
---------------------------------
1 remote-guest running
但是,您可以通过修改 SSH 和 libvirt 配置来删除完整指定连接详情的需要。例如:
# virsh -c remote-host list
root@192.0.2.1's password:
Id Name State
---------------------------------
1 remote-guest running
要进行改进,请按照以下步骤操作。
流程
使用以下详细信息编辑
~/.ssh/config
文件,其中 host-alias 是与特定远程主机关联的短名称,以及 root@192.0.2.1 的别名,hosturl 是主机的 URL 地址:# vi ~/.ssh/config Host example-host-alias User root Hostname 192.0.2.1
使用以下详情编辑
/etc/libvirt/libvirt.conf
文件,example-qemu-host-alias 是一个主机别名,QEMU 和 libvirt 工具将用来为qemu+ssh://192.0.2.1/system
与预期主机 example-host-alias 进行关联:# vi /etc/libvirt/libvirt.conf uri_aliases = [ "example-qemu-host-alias=qemu+ssh://example-host-alias/system", ]
验证
确认通过在本地系统上使用基于 libvirt 的工具,并添加
-c qemu-host-alias
参数,您可以来管理远程虚拟机。这会在远程主机中使用 SSH 自动执行命令。例如,验证以下 192.0.2.1 远程主机上列出的虚拟机,在前面的步骤中到其的连接被设置为 example-qemu-host-alias :
# virsh -c example-qemu-host-alias list root@192.0.2.1's password: Id Name State ---------------------------------------- 1 example-remote-guest running
注意除了
virsh
之外,-c
(或--connect
)选项以及上述远程主机访问配置也可以由以下工具使用:
后续步骤
如果要在单一远程主机中只使用 libvirt 工具,您也可以为基于 libvirt 的实用程序设置特定的连接作为默认目标。但是,如果您也要管理本地主机或不同远程主机上的虚拟机,则不建议这样做。
您可以编辑
/etc/libvirt/libvirt.conf
文件,并将uri_default
参数的值设置为 example-qemu-host-alias 来作为默认 libvirt 目标。# These can be used in cases when no URI is supplied by the application # (@uri_default also prevents probing of the hypervisor driver). # uri_default = "example-qemu-host-alias"
因此,所有基于 libvirt 的命令都会在指定的远程主机中自动执行。
$ virsh list root@192.0.2.1's password: Id Name State --------------------------------- 1 example-remote-guest running
连接到远程主机时,您可以避免向远程系统提供 root 密码。要做到这一点,请使用以下一个或多个方法:
- 设置对远程主机的基于密钥的 SSH 访问
- 使用 SSH 连接多路复用连接到远程系统
- 身份管理中的 Kerberos 身份验证
-
可以使用
-c
(或--connect
)选项来运行virt-install
,
virt-viewer
,以及远程主机上的 virsh
命令。