Access KVM virtual machines over VNC without port forwarding with SSH

Solution 1:

I found the answer after some searching and found the following in /etc/libvirt/qemu.conf

# VNC is configured to listen on 127.0.0.1 by default.
# To make it listen on all public interfaces, uncomment
# this next option.
#
# NB, strong recommendation to enable TLS + x509 certificate
# verification when allowing public access
#
vnc_listen = "0.0.0.0"

I uncommented the above line and restarted libvirtd to find that I was still not able to access VNC over the network. This time the culprit was iptables. On Centos, I used system-config-firewall-tui to allow VNC access.

Solution 2:

if you VNC to the KVM host, it means it should have an X server running (completely redundant thing to do on a hypervisor, but that's your choice). Since you already have a desktop, there's nothing to stop you from running virt-viewer or virt-manager to get access to a guest console directly. On the other hand, if the qemu-kvm VM is running with VNC support, you can simply connect to the VM's VNC console directly