SSH连接远程libvirt提示No worthy mechs found SASL错误排查
libvirt连接oVirt Node节点报SASL协商失败错误解决方案
问题现象
- 服务器运行oVirt Node系统,已完成SSH密钥配置,可通过
ssh user@server -i ssh-privkey正常登录服务器 - 使用
virsh、virt-manager、Terraform libvirt provider尝试连接qemu+ssh//user@host/system?keyfile=ssh-privkey地址时均报错:
authentication failed: Failed to start SASL negotiation: -4 (SASL(-4): no mechanism available: No worthy mechs found)
- 服务端开启
libvirt --listen --verbose模式抓日志,仅输出如下错误信息:
error : virNetSocketReadWire:1792 : End of file while reading data: Input/output error
- 已排查防火墙策略,相关端口全部放通,按照官方TLS配置指引部署客户端、服务端TLS证书后问题仍未解决
根因分析
该问题和TLS配置无关,核心诱因为oVirt Node默认搭载的vdsm服务会修改libvirt默认配置:
vdsm会在/etc/libvirt/libvirtd.conf配置文件中写入auth_unix_rw="sasl"参数,强制所有libvirt连接(包括SSH隧道连接)走SASL认证,而默认环境未配置对应SASL认证机制,因此报No worthy mechs found错误vdsm会修改libvirt PKI证书文件的默认存放路径,按照官方默认文档配置TLS证书不会被libvirt加载,属于无效排查方向
解决方法
编辑服务端/etc/libvirt/libvirtd.conf配置文件,删除或注释掉auth_unix_rw="sasl"配置项,重启libvirtd服务后,即可直接使用SSH私钥通过qemu+ssh方式正常连接,无需额外配置SASL或TLS。
内容的提问来源于stack exchange,提问作者meustrus
相关产品推荐
相关产品推荐

