在开始之前我想道歉——我知道这个问题之前已经被问过,而且我已经找到了一些线索。不幸的是,我对 Linux 非常陌生,在尝试浏览其他人的工作时我迷失了方向。
我正在尝试在主机上创建虚拟机。我的主机有 RHEL7,我正在使用 RHEL6.4 创建虚拟机,我正在使用虚拟机管理器,并且我成功地从 ISO 启动,没有出现任何问题。到目前为止,一切都很好。
我现在尝试从主机建立与虚拟机的连接,但我很挣扎。我正在尝试使用 Hypervisor QEMU/KVM 添加连接,我的主机的主机名,用户名是我的用户名。最初,我收到一条失败消息,直到我安装了 openssh 和 oepnssh-askpass。现在它提示我输入密码。好的,按预期工作。
输入密码后,我收到一个弹出错误,内容如下
虚拟机管理器连接失败无法连接到 libvirt qemu+ssh:// me@myMachine
身份验证无效:没有可用于身份验证操作“org.libvirt.unix.manage”的 polkit 代理
验证“libvirtd”守护进程是否正在远程主机上运行。
我花了很多时间试图弄清楚这一点,但我却不知所措。我尝试更新 libvertpd.pid 文件,但是当我尝试运行 systemcl start/stop libvirt-bin 时,我收到一条警告,指出未加载 Unit libvirt-bin.service。 (老实说,我不确定应该做什么或不应该做什么,我只是按照别人的指示进行操作,希望它最终能起作用。)
如果我尝试运行 libvirtd -d,则会收到一条错误消息“无法获取 pidfile。请检查 /var/log/messages 或在没有 --daemon 的情况下运行以获取更多信息。”我已导航到相应的文件夹并确认 libvirtd.pid 确实存在,并且挂在它应该在的位置。当我尝试检查消息部分时,没有今天的消息,只有 4 天前的消息。
我最好的猜测是我的 libvirtd 有问题,但我不知道是什么问题,也不知道如何诊断它。在试图找出问题/盲目遵循其他人的建议时,我安装了firewalld、dmidecode、dnsmasq、libvirt、libvirt-python、libguestfs-tools和virt-install,但这些似乎都没有以任何方式改变问题。我仍然遇到与以前相同的错误。
如果有人知道如何解决这个问题(并且可以握住我的手,了解在哪里导航以及输入什么内容),我将非常感激。
答案1
如果您在 VM 主机上运行 libvirt CLI 客户端virsh --connect qemu:///system
,它会提示您输入密码来管理系统 VM。该提示实际上是由策略工具包 (polkit) 代理完成的。
当 virt-manager 以您的用户身份登录时,它会尝试做同样的事情,但由于实际上没有终端来询问您,所以它失败了。这就是您看到的奇怪错误。
修复方法相对简单:允许您的用户无需密码即可管理虚拟机。您可以通过将用户添加到正确的组来实现这一点libvirt
(RedHat 和 Debian/Ubuntu 都使用相同的组)。