Red Hat Bugzilla – Bug 1441127
Virt-manager can't connect to guest spice unix socket.
Last modified: 2018-04-10 07:42:12 EDT
Description of problem: Virt-manager can't connect to guest spice unix socket. Version-Release number of selected component: virt-manager-1.4.1-1.el7.noarch libvirt-3.2.0-2.el7.x86_64 How reproducible: 100% Steps to Reproduce: 0. Set spice listen type='socket': # virsh edit rhel7.4 ... <graphics type='spice'> <listen type='socket'/> </graphics> ... 1. Start guest # virsh start rhel7.4 2. Launch virt-manager on the same host and open guest window. # virt-manager 3. Launch virt-manager on a remote host and try to open guest window. 4.Check virt-manager.log # cat /root/.cache/virt-manager/virt-manager.log Actual results: 1) virt-manager can connect to guest graphic on the same host, but I found "gsocket=None" in the log: [Tue, 11 Apr 2017 16:42:05 virt-manager 10055] DEBUG (console:718) Starting connect process for proto=spice trans= connhost=127.0.0.1 connuser= connport= gaddr=127.0.0.1 gport=None gtlsport=None gsocket=None 2) If launch virt-manager on a remote host, it will fail to open guest window and reports: "Error connecting to graphical console: Guest is on a remote host, but is only configured to allow local file descriptor connections." Expected results: virt-manager can connect to guest spice unix socket.
I can also reproduce this error when i connect to a spice guest which listen type equals none on a remote connection. package version: virt-manager-1.4.1-2.el7.noarch libvirt-3.2.0-3.virtcov.el7.x86_64 qemu-kvm-rhev-2.9.0-1.el7.x86_64 Steps: Need 2 hosts: HostA and HostB. 1. Prepare a spice guest with listen type equals none on HostA. # virsh dumpxml esx6.0-rhel6.7-x86_64 --security-info ... <graphics type='spice'> <listen type='none'/> </graphics> <video> 2. Launch virt-manager on HostB, File->Add connection->Hypervisor choosing 'QEMU/KVM'->Tick 'Connect to remote host'->Method 'SSH'->Username: root ->Hostname: $host A ->Connect. 3. Open guest console 'esx6.0-rhel6.7-x86_64' on hostA. Result after step3: It will fail to open guest window and reports: "Error connecting to graphical console: Guest is on a remote host, but is only configured to allow local file descriptor connections."
(In reply to zhoujunqin from comment #2) > I can also reproduce this error when i connect to a spice guest which listen > type equals none on a remote connection. > When listen type=none, graphic can't be opened on remote host, this is expected
(In reply to JinFangge from comment #3) > (In reply to zhoujunqin from comment #2) > > I can also reproduce this error when i connect to a spice guest which listen > > type equals none on a remote connection. > > > When listen type=none, graphic can't be opened on remote host, this is > expected Yes, fjin, thanks for pointing out. So please ignore Comment 2, thanks.
Upstream patch posted: https://www.redhat.com/archives/virt-tools-list/2017-September/msg00039.html
Upstream commits: commit ccaef8c16a89ad4ca64b07fd5f6cc6e91de3a15e Author: Pavel Hrdina <phrdina@redhat.com> Date: Wed Sep 6 10:14:35 2017 +0200 graphics: set default port only for correct listen types commit fe6c5067c0d1fea786bb5255043a19d25249b65b Author: Pavel Hrdina <phrdina@redhat.com> Date: Wed Sep 6 10:17:43 2017 +0200 graphics: introduce listens.{type|address|network} parameters commit d718f1a516757606093207190de6b10a40a47d1c Author: Pavel Hrdina <phrdina@redhat.com> Date: Wed Sep 6 10:26:33 2017 +0200 graphics: introduce listens.socket parameter commit f1976155cd1711f5009d38b10bcf4bd511927608 Author: Pavel Hrdina <phrdina@redhat.com> Date: Wed Sep 6 09:24:53 2017 +0200 sshtunnels: use <listen> element to get UNIX socket for graphics
I can reproduce this issue with package: virt-install-1.4.1-7.el7.noarch virt-manager-1.4.1-7.el7.noarch virt-manager-common-1.4.1-7.el7.noarch Then try to verify this bug with new build: virt-install-1.4.3-1.el7.noarch virt-manager-1.4.3-1.el7.noarch virt-manager-common-1.4.3-1.el7.noarch Steps: Need 2 hosts: HostA and HostB. 0. Set spice listen type='socket' to guest on HostA. # virsh edit rhel7.4 ... <graphics type='spice'> <listen type='socket'/> </graphics> ... 1. Start guest # virsh start rhel7.4 # virsh dumpxml rhel7.4 ... <graphics type='spice'> <listen type='socket' socket='/var/lib/libvirt/qemu/domain-30-rhel7.4/spice.sock'/> </graphics> ... 2. Launch virt-manager on HostA and open guest window. # virt-manager 3. Launch virt-manager on HostB and try to open guest window. File->Add connection->Hypervisor choosing 'QEMU/KVM'->Tick 'Connect to remote host'->Method 'SSH'->Username: root ->Hostname: $HostA ->Connect. 4. Open guest console 'rhel7.4' on HostA. Result: After step2, virt-manager can open guest console on HostA. After step4, virt-manager can also open guest console on remote HostB. Since we can connect to SPICE graphics on remote host using SSH tunnel, move this bug from ON_QA to VERIFIED, thanks.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHEA-2018:0726