virt-install ignoring vnc port/listen?

user195086 asked:

I’m trying to create kvm machine on remote host.

The host is running debian testing.

Did use this command:

virt-install --name debian-test \
    --os-type=linux \
    --os-variant=debianwheezy \
    --cdrom /media/media/software/iso/debian-testing-amd64-netinst-2014-01-16.iso \
    --graphics vnc,listen=,port=20001 \
    --disk pool=default,format=raw,size=20 \
    --ram 2048 \
    --vcpus=2 \
    --network bridge=virbr0 \
    --hvm \

But when it is created, it listens on:

=# virsh domdisplay debian-test

When I had port=40001 in creation, it was listening on port 34101, so it looks like the port is treated as some kind of offset?! In any way – listen is not being used at all, and being able to connect from localhost is not what I want right now.

What am I doing wrong?

My answer:

You aren’t doing anything wrong. The VNC protocol specifies that the “port” isn’t actually a port, but an offset from 5900, the default VNC port.

Thus localhost:0 would connect to port 5900, localhost:1 would connect to port 5901, etc.

By default, libvirt only binds VNC listeners to localhost, regardless of what you specify on the command line. To change this, you need to edit the appropriate option in /etc/libvirt/qemu.conf.

# VNC is configured to listen on 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 = ""

Make sure to reload or restart libvirtd after making this change.

View the full question and answer on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.