5.3. 传输模式


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

传输层安全性(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。

默认传输(如果没有指定其他)为 TLS。

远程 URI

virshlibvirt 使用统一资源标识符(URI)连接到远程主机。URI 也可与 virsh 命令的 --connect 参数一起使用,以在远程主机上执行单个命令或迁移。通过使用普通本地 URI 并添加主机名或传输名称,形成远程 URI。作为特殊情况,使用'remote' 的 URI 方案,将告知远程 libvirtd 服务器探测到最佳管理程序驱动程序。这等同于为本地连接传递 NULL URI

libvirt URI 采用常规形式(用方括号为 "[]",表示可选功能):
driver[+transport]://[username@][hostname][:port]/path[?extraparameters]
请注意,如果虚拟机监控程序(driver)是 QEMU,则路径是必须的。如果是 XEN,则是可选的。
以下是有效远程 URI 的示例:
  • qemu://hostname/
  • xen://hostname/
  • xen+ssh://hostname/
必须向外部位置提供传输方法或主机名。有关详情请参阅 http://libvirt.org/guide/html/Application_Development_Guide-Architecture-Remote_URIs.html

远程管理参数示例

  • 使用 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 格式)。

表 5.1. 附加 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
portusernamehostname 参数可作为远程 URI 的一部分指定。commandnetcatsocket 来自其他的额外参数。
netcat=/opt/netcat/bin/nc
no_verify tls 如果设置为非零值,则禁用对服务器证书的客户端检查。请注意,要禁用对客户端的证书或 IP 地址的服务器检查,您必须更改 libvirtd 配置。 no_verify=1
no_tty ssh 如果设置为非零值,则在无法自动登录到远程机器时,这将停止 ssh 询问密码(如果无法自动登录到远程机器)。当您无法访问终端 时使用这个选项。 no_tty=1
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.