libvirt-php收到错误:无法连接到服务器权限被拒绝

时间:2014-11-24 14:45:16

标签: php centos qemu kvm libvirt

我已经安装了php-libvirt以及所有必需的软件包(我尝试过remi rpm和编译)。

我已按如下方式设置我的php文件:

<?php
print_r ( libvirt_version() );
echo '<br>';
$uri="qemu+tcp:///system";
$credentials=array(VIR_CRED_AUTHNAME=>"fred",VIR_CRED_PASSPHRASE=>"fred");
echo ("Connecting to libvirt (URI:$uri)<BR>");
$conn=libvirt_connect($uri,false,$credentials);
if ($conn==false)
{
    echo ("Libvirt last error: ".libvirt_get_last_error()."<br>");
    exit;
} else {
    $hostname=libvirt_get_hostname($conn);
    echo ("hostname:$hostname<br>");
?>

然而,当我加载页面时,我得到:

Array ( [libvirt.release] => 2 [libvirt.minor] => 10 [libvirt.major] => 0 [connector.version] => 0.4.8 [connector.major] => 0 [connector.minor] => 4 [connector.release] => 8 ) 
Connecting to libvirt (URI:qemu+tcp:///system)
Libvirt last error: unable to connect to server at 'localhost:16509': Permission denied

当我运行

时,它在命令行中运行良好
# virsh -c qemu+tcp:///system list

Please enter your authentication name: fred
Please enter your password:

 Id    Name                           State
----------------------------------------------------

我已经尝试过来自另一台服务器的命令行,以确保它可以远程工作,并且没问题。

我尝试过fred @ hostname并且没有用。我尝试过VIR_CRED_USERNAME,但也没有用。

可能是什么问题?

1 个答案:

答案 0 :(得分:0)

默认情况下,libvirtd TCP连接的身份验证机制是SASL。直到现在TCP连接正在侦听,现在我们必须配置基于SASL的身份验证。编辑/etc/libvirt/libvirtd.conf,他们使用的是auth_tcp =“none”,但如果没有使用,则使用auth_tcp =“sasl”。现在执行以下命令。

sudo saslpasswd2 -a libvirt fred
Password: fred
Again (for verification): fred

在你的情况下,libvirtd正在侦听TCP连接,但有时我们需要进行一些更改以使其在给定端口上侦听。参考文献中的第一个链接对此非常有用。

参考文献:

https://askubuntu.com/questions/423425/i-cant-use-libvirt-with-listen-tcp

http://libvirt.org/auth.html#ACL_server_username

https://www-01.ibm.com/support/knowledgecenter/linuxonibm/liabp/liabpkvmsecsrmsasl.htm