13.3. 传输模式

对于远程管理,libvirt 支持以下传输模式:

传输层安全性(TLS)

使用传输层安全性 TLS(SSL 3.1)认证和加密的 TP/IP 插槽通常侦听在公用端口号上进行侦听。要使用这个方法,您需要生成客户端和服务器证书。标准端口为 16514。

UNIX 插槽

Unix 域插槽只能从本地机器访问。插槽是不加密的,并使用 UNIX 权限或者 SELinux 进行认证。标准插槽名称为 /var/run/libvirt/libvirt-sock/var/run/libvirt/libvirt-sock-ro(用于只读连接)。

SSH

通过安全 Shell 协议(SSH)连接传输。需要安装 Netcat(nc 软件包)。必须在远程机器中运行 libvirt 守护进程(libvirtd)。必须为 SSH 访问打开端口 22。您应该使用某些 ssh 密钥管理(例如:ssh-agent 程序)或者提示您输入密码。

ext

ext 参数是可用于 libvirt 之外生成连接到远程机器的任意外部程序。这通常包括第三方程序以及不支持的安全程序。

tcp

未加密的 TCP/IP 插槽。不建议在产品中使用,一般将其禁用,但管理员可使用它进行测试或者在信托网络中使用。默认端口为 16509。

默认传输,如果没有具体指定,则为 tls。

远程 URI

A Uniform Resource Identifier (URI) is used by `virsh` and `libvirt` to connect to a remote host. URIs can also be used with the `--connect` parameter for the `virsh` command to execute single commands or migrations on remote hosts.

libvirt URIs take the general form (content in square brackets, “[]“, represents optional functions):

  1. driver[+transport]://[username@][hostname][:port]/[path][?extraparameters]

必须提供传输方法或者主机名以便使其与本地 URI 区分。

远程管理参数示例
  • 在名为 towada 的主机中使用 SSH 传输和 SSH 用户名 ccurran 连接到远程 Xen 管理程序。

    1. xen+ssh://ccurran@towada/
  • 使用 TLS 在名为 towada 的主机中连接到远程 Xen 监控程序。

    1. xen://towada/
  • 使用 TLS 在名为 towada 的主机中连接到远程 Xen 监控程序。no_verify=1 告诉 libvirt 不要验证服务器证书。

    1. xen://towada/?no_verify=1
  • 使用 SSH 在主机 towada 中连接到远程 KVM 管理程序。

    1. qemu+ssh://towada/system
测试示例
  • 使用非标准 UNIX 插槽连接到本地 KVM 管理程序。在此特别提供了到该 Unix 插槽的完整路径。

    1. qemu+unix:///system?socket=/opt/libvirt/run/libvirt/libvirt-sock
  • 使用未加密 TCP/IP 将 libvirt 守护进程连接到端口 5000 中 IP 地址为 10.1.1.10 的服务器。这使用带默认设置的测试驱动程序。

    1. test+tcp://10.1.1.10:5000/default
额外 URI 参数

Extra parameters can be appended to remote URIs. The table below 表 13.1 “额外 URI 参数” covers the recognized parameters. All other parameters are ignored. Note that parameter values must be URI-escaped (that is, a question mark (?) is appended before the parameter and special characters are converted into the URI format).

名称传输模式Description示例用法
name所有模式为 virConnectOpen 功能提供的名称。该名称通常由删除的传输、主机名、端口号、用户名以及远程 URI 中的附加参数组成,但在这个非常复杂的例子中,最好提供单独的名称。name=qemu:///system
命令ssh 和 ext外部命令。ext 传输需要外部命令。ssh 默认为 ssh。PATH 是为该命令进行搜索。command=/opt/openssh/bin/ssh
插槽unix 和 ssh到 UNIX 域套接字的路径将覆盖默认路径。在 ssh 传输中会将其传递给远程 netcat 命令(参见 netcat)。socket=/opt/libvirt/run/libvirt/libvirt-sock
netcatssh远程机器中 netcat 命令的名称。默认为 nc。在 ssh 传输中,libvirt 组成的 ssh 命令类似:command -p port [-l username] hostname netcat -U socket,其中 port、username、hostname 可作为远程 URI 的一部分指定,command、netcat 和 socket 来自外部参数(或者合理的默认设置)。netcat=/opt/netcat/bin/nc
no_verifytls如果设定一个非零值,则会禁止客户端坚持服务器证书。注意:要禁用服务器检查客户端证书或者 IP 地址,您必须更改 libvirtd 配置。no_verify=1
no_ttyssh如果设定一个非零值,则会在无法自动登录到远程机器时禁止 ssh 询问密码(在使用 ssh-agent 或者类似程序的情况下)。在您无法访问终端时使用这个值 — 例如在使用 libvirt 的图形程序中。no_tty=1
表 13.1. 额外 URI 参数