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):
driver[+transport]://[username@][hostname][:port]/[path][?extraparameters]
必须提供传输方法或者主机名以便使其与本地 URI 区分。
远程管理参数示例
在名为
towada
的主机中使用 SSH 传输和 SSH 用户名ccurran
连接到远程 Xen 管理程序。xen+ssh://ccurran@towada/
使用 TLS 在名为
towada
的主机中连接到远程 Xen 监控程序。xen://towada/
使用 TLS 在名为
towada
的主机中连接到远程 Xen 监控程序。no_verify=1
告诉 libvirt 不要验证服务器证书。xen://towada/?no_verify=1
使用 SSH 在主机
towada
中连接到远程 KVM 管理程序。qemu+ssh://towada/system
测试示例
使用非标准 UNIX 插槽连接到本地 KVM 管理程序。在此特别提供了到该 Unix 插槽的完整路径。
qemu+unix:///system?socket=/opt/libvirt/run/libvirt/libvirt-sock
使用未加密 TCP/IP 将 libvirt 守护进程连接到端口 5000 中 IP 地址为 10.1.1.10 的服务器。这使用带默认设置的测试驱动程序。
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 |
netcat | ssh | 远程机器中 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_verify | tls | 如果设定一个非零值,则会禁止客户端坚持服务器证书。注意:要禁用服务器检查客户端证书或者 IP 地址,您必须更改 libvirtd 配置。 | no_verify=1 |
no_tty | ssh | 如果设定一个非零值,则会在无法自动登录到远程机器时禁止 ssh 询问密码(在使用 ssh-agent 或者类似程序的情况下)。在您无法访问终端时使用这个值 — 例如在使用 libvirt 的图形程序中。 | no_tty=1 |