Debian 通过 SSH 远程连接虚拟机管理 Virt-Manager 报错修复

后知后觉 暂无评论

使用 Debian 连接远程 Virt-Manager 时报错

问题

报错如下

Unable to connect to libvirt qemu+ssh://test@102.102.102.102/system.

Authentication unavailable: no polkit agent is available to authenticate action "org.libvirt.unix.manage"

这是因为宿主机使用非 root 用户启动服务,远程登录时默认禁止非 root 用户访问 libvirt 服务,可以通过 polkit 策略定制 libvirt 服务的特殊权限,或者将受限用户加入 libvirt 进程的用户组。

处理

注意:以下所有操作在远程的母机上进行操作!

补充依赖

为了方便连接请先进行免密认证,然后安装

sudo apt install ssh-askpass

确定用户

先确定当前用户

whoami

得到当前登录的用户名,比如 uos

确定用户组

id uos

取得用户所属的组

定制 Polkit 权限

进入权限文件夹

cd /etc/polkit-1/localautority/50-local.d/

创建一个任意名称的以 pkla 为后缀的文件,例如 50-andyx-libvirt-group-access.pkla

写入以下内容

[libvirt group Management Access] 
Identity=unix-group:用户组
Action=org.libvirt.unix.manage 
ResultAny=yes 
ResultInactive=yes 
ResultActive=yes

保存即可,注意替换掉所查的用户组

小贴士:此权限文件为立即生效,无需重启服务。

定制用户组

将用户添加至 libvirt 服务所属组内

usermod -a -G libvirt uos

添加完毕后重启 Virt-Manager 连接即可。

异常处理

如果打开控制台时报错 Error opening Spice console, SpiceclientGtk missing 是因为系统缺少依赖所致。

sudo apt install gir1.2-spiceclientgtk-3.0

安装后重启程序即可。


附录

参考链接

如果遇到问题或者对文章内容存疑,请在下方留言,博主看到后将及时回复,谢谢!
回复
回答32+12=