As diferenças entre qemu:///system e qemu:///session ao usar virsh -c estão relacionadas ao nível de privilégio, local de execução e gestão de máquinas virtuais.
qemu:///system
(Sistema Global)
Executa como root, pois gerencia VMs globalmente no sistema.
As VMs são armazenadas em /var/lib/libvirt/qemu/
e /var/lib/libvirt/images/
.
VMs iniciadas aqui podem ser acessadas por qualquer usuário com permissão.
Geralmente usado em servidores e ambientes de produção.
Mais seguro para administração centralizada.
qemu:///session
(Sessão do Usuário)
Executa como usuário normal, sem precisar de permissões administrativas.
As VMs são armazenadas em ~/.local/share/libvirt/
e ~/.cache/qemu/
.
Cada usuário pode criar e gerenciar suas próprias VMs, sem interferir nas do sistema.
Não requer privilégios de root, tornando-o útil para testes e desenvolvimento.
Menos integração com o sistema, pois não afeta processos globais.
Para servidores e produção: qemu:///system (mais controle e persistência).
Para desenvolvimento e testes rápidos: qemu:///session (sem precisar de root).
Para mudar o padrão do virsh para qemu:///system em vez de qemu:///session, você pode fazer o seguinte:
Sempre que usar virsh, especifique manualmente:
virsh --connect qemu:///system
Isso força a conexão com o hypervisor do sistema.
Se quiser que virsh sempre use qemu:///system, exporte a variável LIBVIRT_DEFAULT_URI:
export LIBVIRT_DEFAULT_URI=qemu:///system
Para tornar isso permanente, adicione ao ~/.bashrc ou ~/.bash_profile:
echo 'export LIBVIRT_DEFAULT_URI=qemu:///system' >> ~/.bashrc
source ~/.bashrc
Se virsh insiste em usar qemu:///session, pode ser porque seu usuário não tem permissão para acessar o qemu:///system.
Tente executar virsh como root:
sudo virsh
Se funcionar, você pode adicionar seu usuário ao grupo libvirt:
sudo usermod -aG libvirt $(whoami)
newgrp libvirt
A melhor opção é exportar LIBVIRT_DEFAULT_URI para garantir que virsh sempre use qemu:///system automaticamente.
Defina a variável de ambiente para acessar um servidor remoto via SSH:
export LIBVIRT_DEFAULT_URI="qemu+ssh://usuario@servidor/system"
Substitua usuario pelo nome de usuário e servidor pelo endereço IP ou hostname do servidor remoto.
Torne a configuração permanente adicionando ao ~/.bashrc ou ~/.bash_profile:
echo 'export LIBVIRT_DEFAULT_URI="qemu+ssh://usuario@servidor/system"' >> ~/.bashrc
source ~/.bashrc
Verifique se a conexão funciona executando:
virsh uri
Se tudo estiver correto, a saída será:
qemu+ssh://usuario@servidor/system
Se precisar de autenticação sem senha, configure chaves SSH (ssh-keygen + ssh-copy-id).
Para usar um modo de sessão de usuário, altere system para session:
qemu+ssh://usuario@servidor/session
Para mais segurança, especifique uma porta SSH diferente, se necessário:
qemu+ssh://usuario@servidor:2222/system
Agora seu virsh se conectará automaticamente ao servidor remoto