CentOS 6.2 上のKVMをリモートのvirt-managerから操作する
CentOS系ではyum install qemu-kvm libvirtしたあと、root以外でlibvirtを実行できるような設定になっていない。
・rootユーザーでSSHログインはしない
・virt-managerはサーバー上でなく、手元からリモートで動かしたい
上記を満たすために、libvirtdの設定を変更する。
参考にしたサイト
# vi /etc/libvirt/libvirtd.conf unix_sock_group = "libvirt" unix_sock_rw_perms = "0770"
groupadd libvirt usermod -a -G libvirt [username]これでlibvirtdを再起動すればOK…のはずだったのだが。 SSHの鍵認証をさせて、virt-managerで接続させても延々と"libvirtError: authentication failed"のような認証エラーが出る。
# vi /usr/share/polkit-1/actions/org.libvirt.unix.policy <allow_any>auth_admin</allow_any> <allow_inactive>auth_admin</allow_inactive>上記の修正で直ったという情報もあったけれど、どうもしっくりこないので調べた。︵そもそもこれで認証が通ったら、unix_sock_rw_perms = "0770"の設定は何なんだ?︶ 結論としては、PolicyKitの認証が関係していた。 CentOSでは、libvirtd.confがほとんどの場合コメントアウトしてあり、以下の部分も同様。 # /etc/libvirt/libvirtd.conf # auth_unix_rw = "none" libvirtd.conf中のauth_unix_rwの説明に、以下のようにある。 # Set an authentication scheme for UNIX read-write sockets # By default socket permissions only allow root. If PolicyKit # support was compiled into libvirt, the default will be to # use 'polkit' auth. つまりCentOS6では、libvirtが最初からpolicykitを使うようにビルドされているということだ。 libvirtd.confを以下のように編集しなおして、無事操作できた。
# vi /etc/libvirt/libvirtd.conf unix_sock_group = "libvirt" unix_sock_rw_perms = "0770" auth_unix_rw = "none"ちなみに、Ubuntu系では最初から
auth_unix_ro = "none" auth_unix_rw = "none"と設定されている。 openSUSEのマニュアルにも、 第7章 接続と権限 推奨設定 SSH を利用したリモートからのトンネル 7.1.1.1項 ﹁パーミッションとグループ所有者を利用した UNIX ソケット向けのアクセス制御﹂ 想定済みというわけらしい…。うーんこのRHEL。
参考にしたサイト