5.3. 传输模式
传输层安全性(TLS)
传输层安全性 TLS 1.0(SSL 3.1)经验证并加密 TCP/IP 套接字,通常侦听公共端口号。要使用这个设置,您需要生成客户端和服务器证书。标准端口为 16514。
UNIX 套接字
UNIX 域套接字仅可在本地计算机上访问。套接字没有加密,并使用 UNIX 权限或 SELinux 进行身份验证。标准套接字名称为 /var/run/libvirt/libvirt-sock
和 /var/run/libvirt/libvirt-sock-ro
(用于只读连接)。
SSH
通过安全 Shell 协议(SSH)连接传输。需要安装 Netcat( nc 软件包)。libvirt 守护进程(libvirtd)必须在远程系统上运行。端口 22 必须处于打开状态才能进行 SSH 访问。您应该使用某种 SSH 密钥管理(例如,ssh-agent 实用程序),否则将提示您输入密码。
ext
ext
参数用于任何可通过 libvirt 范围外连接到远程机器的外部程序。这个参数不被支持。
TCP
未加密的 TCP/IP 套接字。不建议在生产环境中使用,这通常是禁用的,但管理员可以启用它进行测试或在可信网络上使用。默认端口为 16509。
远程 URI
virsh 和 libvirt 使用统一资源标识符(URI)连接到远程主机。URI 也可与 virsh 命令的 --connect 参数一起使用,以在远程主机上执行单个命令或迁移。通过使用普通本地 URI 并添加主机名或传输名称,形成远程 URI。作为特殊情况,使用'remote' 的 URI 方案,将告知远程 libvirtd 服务器探测到最佳管理程序驱动程序。这等同于为本地连接传递 NULL URI
driver[+transport]://[username@][hostname][:port]/path[?extraparameters]
- qemu://hostname/
- xen://hostname/
- xen+ssh://hostname/
远程管理参数示例
- 使用 SSH 传输和 SSH 用户名
virtuser
连接到一个名为host2
的远程 KVM 主机。每个连接的命令是连接 [< name>] [--readonly],其中 < name& gt; 是有效的 URI,如此处所述。有关 virsh connect 命令的详情请参考 第 14.1.5 节 “connect”qemu+ssh://virtuser@hot2/
- 使用 TLS 连接到名为
host2
的主机上的远程 KVM 管理程序。qemu://host2/
测试示例
- 使用非标准 UNIX 套接字连接到本地 KVM 管理程序。本例中明确提供了到 UNIX 套接字的完整路径。
qemu+unix:///system?socket=/opt/libvirt/run/libvirt/libvirt-sock
- 使用未加密的 TCP/IP 连接到 libvirt 守护进程,使用 IP 地址 10.1.1.10 在端口 5000 上连接到服务器。这会将 test 驱动程序与默认设置搭配使用。
test+tcp://10.1.1.10:5000/default
附加 URI 参数
可以在远程 URI 中附加额外参数。下表 表 5.1 “附加 URI 参数” 涵盖了可识别的参数。其它参数将被忽略。请注意,参数值必须是 URI-escaped(即,在参数前附加一个问号(?),并且特殊字符转换为 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 |
netcat | ssh |
netcat 命令可用于连接到远程系统。默认 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 询问密码(如果无法自动登录到远程机器)。当您无法访问终端 时使用这个选项。 | no_tty=1 |