第 18 章 客户机的远程管理
18.1. 传输模式
传输层安全性(TLS)
传输层安全性 TLS 1.0(SSL 3.1)经过验证和加密 TCP/IP 套接字,通常在公共端口号上侦听。要使用此功能,您需要生成客户端和服务器证书。标准端口为 16514。具体步骤请查看 第 18.3 节 “通过 TLS 和 SSL 进行远程管理”。
SSH
通过安全 Shell 协议(SSH)连接进行传输。libvirt 守护进程(libvirtd)必须在远程计算机上运行。端口 22 必须处于打开状态才能进行 SSH 访问。您应该使用某种类型的 SSH 密钥管理(例如,ssh-agent 实用程序),或者会提示您输入密码。具体步骤请查看 第 18.2 节 “使用 SSH 进行远程管理”。
Unix 套接字
UNIX 域套接字只能在本地机器上访问。套接字未加密,使用 UNIX 权限或 SELinux 进行身份验证。标准套接字名称是 /var/run/libvirt/libvirt-sock
和 /var/run/libvirt/libvirt-sock-ro
(用于只读连接)。
ext
ext
参数用于任何可以在 libvirt 范围外面连接到远程机器的外部程序。不支持此参数。
TCP
未加密的 TCP/IP 套接字.不建议在生产环境中使用,这通常是禁用的,但管理员可以使它进行测试或在可信网络中使用。默认端口为 16509。
远程 URI
virsh 和 libvirt 使用统一资源标识符(URI)来连接远程主机。URI 也可搭配 --connect 参数用于 virsh 命令,以便在远程主机上执行单个命令或迁移。通过采用普通本地 URI 和添加主机名或传输名称来形成远程 URI。作为特殊情况,使用 URI 方案 'remote' 将指示远程 libvirtd 服务器探测到最佳管理程序驱动程序。这等同于为本地连接传递 NULL URI
driver[+transport]://[username@][hostname][:port]/path[?extraparameters]
- qemu://hostname/
远程管理参数示例
- 使用 SSH 传输和 SSH 用户名
virtuser
连接到名为host2
的远程 KVM 主机。每个连接的 connect 命令都是 connect [URI] [--readonly]。有关 virsh connect 命令的详情请参考 第 20.4 节 “使用 virsh Connect 连接到管理程序”qemu+ssh://virtuser@host2/
- 使用 TLS 连接到名为
host2
的主机上的远程 KVM 管理程序。qemu://host2/
测试示例
- 使用非标准 UNIX 套接字连接到本地 KVM 管理程序。本例中明确提供了 UNIX 套接字的完整路径。
qemu+unix:///system?socket=/opt/libvirt/run/libvirt/libvirt-sock
- 使用非加密 TCP/IP 连接到服务器,在端口 5000 上使用 IP 地址 10.1.1.10 连接到 libvirt 守护进程。这会使用带有默认设置的测试驱动程序。
test+tcp://10.1.1.10:5000/default
额外的 URI 参数
可以将额外参数附加到远程 URI。下表介绍了可识别的参数。所有其他参数将被忽略。请注意,参数值必须是 URI 转义(即问号(?)),在参数和特殊字符转换为 URI 格式之前。
Name | 传输模式 | 描述 | 用法示例 |
---|---|---|---|
名称 | 所有模式 | 传递给远程 virConnectOpen 功能的名称。名称通常通过从远程 URI 中删除 传输 、主机名 、端口号 、用户名 和额外参数而形成,但是在某些非常复杂的情况下,最好地提供名称。 | name=qemu:///system |
命令 | SSH 和 ext | external 命令.对于 ext 传输来说,这是必需的。对于 ssh,默认为 ssh。为该命令搜索 PATH。 | command=/opt/openssh/bin/ssh |
socket | UNIX 和 ssh | UNIX 域套接字的路径,它将覆盖默认值。对于 ssh 传输,这会被传递给远程 netcat 命令(请参见 netcat)。 | socket=/opt/libvirt/run/libvirt/libvirt-sock |
no_verify | tls | 如果设置为非零值,这会禁用客户端检查服务器证书。请注意,要禁用客户端的证书或 IP 地址的服务器检查,您必须更改 libvirtd 配置。 | no_verify=1 |
no_tty | ssh | 如果设置为非零值,这会停止 ssh。如果无法登录远程机器,则停止 ssh。当您无法访问终端 时,使用它。 | no_tty=1 |