virt-viewer remote access tricks

Sometimes I need to connect directly to the console of my virtual machines, typically this is usually when working with development or experimental VMs where SSH/RDP/VNC isn’t working for whatever reason, or when I’m installing a new OS entirely.

To view virtual machines using libvirt (by both KVM or Xen), you use the virt-viewer command, this launches a window and establishes a VNC or SPICE connection into the virtual machine.

Historically I’ve just run this by SSHing into the virtual machine host and then using X11 forwarding to display the virtual machine window on my laptop. However this performs really badly on slow connections, particularly 3G where it’s almost unusable due to the design of X11 forwarding not being particularly efficient.

However virt-viewer has the capability to run locally and connect to a remote server, either directly to the libvirt daemon, or via an SSH tunnel. To do the latter, the following command will work for KVM (qemu) based hypervisors:

virt-viewer --connect qemu+ssh:// vmnamehere

With the above, you’ll have to enter your SSH password twice – first to establish the connection to the hypervisor and secondly to establish a tunnel to the VM’s VNC/SPICE session – you’ll probably quickly decide to get some SSH keys/certs setup to prevent annoyance. ;-)

This performs way faster than X11 forwarding, plus the UI of virt-manager stays much more responsive, including grabbing/ungrabbing of the local keyboard/mouse, even if the connection or server is lagging badly.

If you’re using Xen with libvirt, the following should work (I haven’t tested this, but based on the man page and some common sense):

virt-viewer --connect xen+ssh:// vmnamehere

If you wanted to open up the right ports on your server’s firewall and are sending all traffic via a secure connection (eg VPN), you can drop the +ssh and use –direct to connect directly to the hypervisor and VM without port forwarding via SSH.

This entry was posted in Uncategorized and tagged , , , , , , , , , . Bookmark the permalink.

5 Responses to virt-viewer remote access tricks

  1. chris says:

    Thank you! Exactly what I was looking for.

  2. clinton says:


  3. dAm2K says:

    Thank you! Works correctly

  4. Siven says:

    Thank god for you posting this. I was following along the RHEL 8 configuring and managing virtualization document and the command they had was the same except it included the -d option, but I couldn’t get it to work like that. This works just fine, thank you.

  5. P. Chandra says:

    I tried this and not about to get it running on my rocky linux. I am using kvm+libvirt on one of the machines with a rocky install to run a bunch of VMs. I have another rocky linux install on a different machine where I tried using this to view the consoles of the VMs running on the other machine, but it fails saying that there are “No running virtual machine found”. Do I need to change something in the qemu/KVM on the machine running the virualization? Thank you for your help

Leave a Reply