Сколько бы я ни пытался, я не могу найти нужную документацию, чтобы помочь мне настроить аутентификацию SASL для доступа клиента SPICE к гостевым виртуальным машинам под qemu-kvm.
Мой хост - Ubuntu 18.04.
> virt-manager --version
1.5.1
> virsh --version
4.0.0
> qemu-system-i386 --version # same as `kvm --version`
QEMU emulator version 2.11.1(Debian 1:2.11+dfsg-1ubuntu7.21)
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers
> saslpasswd2 -v
This product includes software developed by Computing Services
at Carnegie Mellon University (http://www.cmu.edu/computing/).
Built against SASL API version 2.1.27
LibSasl version 2.1.27 by "Cyrus SASL"
Шаги, за которыми я следовал:
1 / build & start vm под virt-manager или vir sh с доступом через spice - это работает
2 / включить специи SASL:
vim /etc/libvirt/qemu.conf
#uncomment spice_sasl:
spice_sasl = 1
3 / настроить qemu:
cd /etc/sasl2
cp libvirt.conf qemu.conf
gvim qemu.conf
#Disable kerberos, enable scram-sha (for testing)
#Path to sasl db is /etc/sasldb2 (also tried /etc/qemu/passwd.db)
4 / установить пароли
saslpasswd2 -a libvirt <user1, 2, or 3>
или
saslpasswd2 -f /etc/qemu/passwd.db -c <user 1, 2, or 3>
5 / демон перезапуска
service libvirtd restart
6 / доступ
через virt-manager
или virt-viewer
, результат тот же: * 1029 Консоль * spice GUI запрашивает пароль (примечание: только пароль, а не имя пользователя), но введите ли я пароль sasl2 для этого пользователя или любого другого, или введу пароль хоста или гостя linux, с этим сообщением об ошибке всегда происходит сбой:
Ошибка аутентификации средства просмотра: аутентификация не удалась.
Странно, но виртуальная машина меняет состояние с выключенного на работающее, несмотря на сбой аутентификации. Но это кстати.
Файл журнала виртуальной машины показывает:
2020-01-28 11:41:08.017+0000: starting up libvirt version: 4.0.0, package: 1ubuntu8.14 (Rafael David Tinoco <rafaeldtinoco@ubuntu.com> Wed, 20 Nov 2019 11:52:51 +0000), qemu version: 2.11.1(Debian 1:2.11+dfsg-1ubuntu7.21), hostname: asm4
LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin QEMU_AUDIO_DRV=spice /usr/bin/kvm-spice -name guest=vm-test,debug-threads=on -S -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-8-vm-test/master-key.aes -machine pc-i440fx-bionic,accel=kvm,usb=off,vmport=off,dump-guest-core=off -cpu Skylake-Client-IBRS -m 4096 -realtime mlock=off -smp 3,sockets=1,cores=3,threads=1 -uuid 7bb1a2a5-3ccb-452f-88bd-7d914b5aa61d -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-8-vm-test/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=delay -no-hpet -no-shutdown -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -boot strict=on -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x5.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x5 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x5.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x5.0x2 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x6 -drive file=/data/LinuxMint19-test.qcow2,format=qcow2,if=none,id=drive-ide0-0-0 -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -netdev tap,fd=27,id=hostnet0,vhost=on,vhostfd=29 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:17:98:b2:f6,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev spicevmc,id=charchannel0,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -spice port=0,sasl,disable-ticketing,image-compression=off,seamless-migration=on -device qxl-vga,id=video0,ram_size=134217728,vram_size=134217728,vram64_size_mb=0,vgamem_mb=128,max_outputs=1,bus=pci.0,addr=0x2 -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -chardev spicevmc,id=charredir0,name=usbredir -device usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=1 -chardev spicevmc,id=charredir1,name=usbredir -device usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=2 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x7 -msg timestamp=on
2020-01-28T11:41:08.052589Z qemu-system-x86_64: -chardev pty,id=charserial0: char device redirected to /dev/pts/23 (label charserial0)
(process:4539): Spice-WARNING **: 11:41:08.130: reds.c:1601:reds_send_link_ack: not initialising RSA key
(process:4539): Spice-WARNING **: 11:41:08.134: reds-stream.c:1073:reds_sasl_start_auth: sasl context setup failed -7 (invalid parameter supplied)
(process:4539): Spice-WARNING **: 11:41:12.456: reds-stream.c:1073:reds_sasl_start_auth: sasl context setup failed -7 (invalid parameter supplied)
(process:4539): Spice-WARNING **: 12:43:44.054: reds-stream.c:1073:reds_sasl_start_auth: sasl context setup failed -7 (invalid parameter supplied)
Требуемая поддержка:
Меня интересует понимание того, как заставить работать эти пароли sasl2 (на самом деле в идеале, используя пароли гостевых систем linux или блокировку экрана гостевой системы, когда новый клиент подключается к spice, но это две другие темы, на которые я не нашел ответа ни на одном форуме, который мог найти).
Так что любые указатели на хорошую, легкую для чтения, всеобъемлющую документацию по sasl с libvirt, с примерами, будут фантастичны c.