virsh:無法以使用者身分連線至虛擬機器管理程序

virsh:無法以使用者身分連線至虛擬機器管理程序

我目前運行的是 RHEL 7.7 作業系統。

我試圖使用 kvm2 驅動程式設定 minkube 環境,所以發生的情況是 minikube 啟動得很好,但在啟動過程中出現了一些錯誤。

錯誤如下:

'kvm2' driver reported an issue: /bin/virsh domcapabilities --virttype kvm failed:
error: failed to connect to the hypervisor
error: Cannot recv data: Connection reset by peer

所以我開始調查,首先我嘗試在命令列上運行 virsh 命令,得到相同的錯誤,所以我嘗試的第二件事是使用 sudo 運行這個命令,在這種情況下它有效。

所以我認為這一定是權限問題,但我仍然無法解決這個問題(我想以使用者身分啟動 minikube 而不必使用 sudo)。

到目前為止我嘗試過的:

  1. 將我的用戶新增至 libvirt 群組 - 仍然失敗
  2. 在群組中新增我的使用者:kvmuser qemu 和 kvm - 仍然失敗
  3. 使用以下配置更新了 libvirtd.conf 檔案:
unix_sock_group = "libvirt"
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"
unix_sock_dir = "/var/run/libvirt"

  1. 檢查了policykit規則,該規則已經包含以下內容:
polkit.addRule(function(action, subject) {
    if (action.id == "org.libvirt.unix.manage"
            && subject.local
            && subject.active
            && subject.isInGroup("wheel")) {
        return polkit.Result.YES;
    }
});

所以我嘗試將我的用戶添加到wheel群組中,仍然是相同的問題

  1. 在 systemd-network 中加入了我的用戶(這裡我只是開始隨機的東西,哈哈:D)同樣的問題。
  2. 停用 selinux - 同樣的問題。

所以我到處搜索但找不到解決我的問題的方法,有人可能已經設法解決它了嗎?

我只想以普通用戶身份運行 vish 命令。

答案1

因此,經過所有的努力(順便說一句,將用戶添加到正確的群組可能是正確配置的一部分),我仍然缺少一件事來讓它作為用戶工作。

顯然它需要導出以下環境變數:

export LIBVIRT_DEFAULT_URI=qemu:///system

匯出後,如果使用者位於 libvirt 允許的群組中,則所有命令都將開始工作。

答案2

我手邊沒有支援 rhel libvirt 的主機,但按照以下說明使用了 fedora 31libvirt dbus 文件頁面我可以以輪子成員用戶的身份運行它:

$ cat /etc/dbus-1/system.d/org.libvirt.conf 
<?xml version="1.0"?>
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">

<busconfig>

  <policy group="wheel">
    <allow send_destination="org.libvirt"/>
  </policy>

</busconfig>

$ id
uid=1000(natxo) gid=1000(natxo) groups=1000(natxo),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$ virsh domcapabilities --virttype kvm
<domainCapabilities>
  <path>/usr/bin/qemu-system-x86_64</path>
  <domain>kvm</domain>
  <machine>pc-i440fx-4.1</machine>
  <arch>x86_64</arch>
  <vcpu max='255'/>
  <iothreads supported='yes'/>
  <os supported='yes'>
    <enum name='firmware'>
      <value>efi</value>
    </enum>
...

您可能需要重新啟動 libvirtd。

相關內容