staging.inyokaproject.org

kubuntu 22 und x11vnc mit Plasma (X11)

Status: Ungelöst | Ubuntu-Version: Kubuntu 22.04 (Jammy Jellyfish)
Antworten |

marmor

Anmeldungsdatum:
15. Juni 2022

Beiträge: Zähle...

Hallo zusammen,

über dieses Thema gibt es zahlreiche Beiträge im Netz, aber ich habe keinen gefunden, der für meine Situation bzw. meine Konfiguration funktioniert hat. Daher erlaube ich mir hier einen neuen Thread zu starten.

Ich betreibe einen Kubuntu 22 Desktop mit Plasma (X11) als grafische Oberfläche. Gleichzeitig möchte ich mich via VNC (über einen Guacamole-Server) verbinden.

Da das Ganze headless läuft, soll der VNC-Server als Dienst vor dem Login eines Users gestartet werden und wenn möglich auf Display 1 (Port 5901) verbunden werden. Natürlich soll der Dienst auch nach dem Abmelden des Users nicht beendet werden.

Weiß jemand bzw. hat jemand eine verlässlich funktionierende Konfiguration für diese Konstellation? Seit der Änderung der Authority scheint mir das Verfahren für die Erstellung eines Dienstes ungleich schwerer als zuvor.

Grüße

noisefloor Team-Icon

Ehemaliger
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

hast du mal geprüft, ob der der Installation des VNC Servers nicht automatisch eine systemd Service Unit mit installiert und aktiviert wird, die den Server startet etc?

Ubuntu setzt inzwischen auf RDP und ab Ubuntu 22.04 kann man den RDP-Server über die Systemeinstellungen von Ubuntu / Gnome ganz einfach aktivieren. Was ich dir auch bestätigten kann ist, dass Kubuntu 22.04 mit xrdp (als RDP-Server) OOTB zusammenarbeitet.

Gruß, noisefloor

marmor

(Themenstarter)

Anmeldungsdatum:
15. Juni 2022

Beiträge: 6

Hallo,

leider kann ich das so nicht bestätigen. Wie bereits geschrieben, nutze ich kubuntu - also mit KDE als Oberfläche. Die Einstellungen der Gnome-Oberfläche sind mir insofern nicht zugänglich.

xrdp habe ich installiert. Der Port 3389/tcp ist offen. Leider ist es dennoch nicht möglich eine Verbindung aufzubauen. Es wird nur kurz der Mauszeiger links oben im Eck angezeigt, dann wird die Verbindung wieder geschlossen.

Grüße

marmor

Newubunti

Anmeldungsdatum:
16. Februar 2008

Beiträge: 4768

marmor schrieb:

Da das Ganze headless läuft, soll der VNC-Server als Dienst vor dem Login eines Users gestartet werden und wenn möglich auf Display 1 (Port 5901) verbunden werden. Natürlich soll der Dienst auch nach dem Abmelden des Users nicht beendet werden.

Wenn der PC zu dem verbunden wird headless läuft, dann braucht man unter X11 eine "virtuelle" xSession. Für diesen Anwendungsfall ist x11vnc nicht konzipiert. Dafür brauchst Du so etwas wie TigerVNC-Standalone-Server. Dazu haben wir hier ein HowTo.

LG, Newubunti

marmor

(Themenstarter)

Anmeldungsdatum:
15. Juni 2022

Beiträge: 6

Die Lösung mit TigerVNC hatte ich auch schon versucht. Ich habe es eben nochmals entsprechend den Vorgaben im Tutorial eingestellt. Der Versuch, den Dienst mittels systemd zu starten ergibt folgendes Ergebnis:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
x tigervncserver@:1.service - Remote desktop service (VNC) for :1 display
     Loaded: loaded (/etc/systemd/system/tigervncserver@:1.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sun 2022-12-11 14:31:33 CET; 22s ago
    Process: 5185 ExecStartPre=/usr/bin/vncserver -kill ::1 > /dev/null 2>&1 (code=exited, status=1/FAILURE)
    Process: 5188 ExecStart=/usr/bin/vncserver ::1 -localhost no (code=exited, status=1/FAILURE)
        CPU: 89ms

Dez 11 14:31:33 kubuntu-desktop systemd[1]: Starting Remote desktop service (VNC) for :1 display...
Dez 11 14:31:33 kubuntu-desktop vncserver[5185]: vncserver: The HOME environment variable must be set.
Dez 11 14:31:33 kubuntu-desktop vncserver[5188]: vncserver: The HOME environment variable must be set.
Dez 11 14:31:33 kubuntu-desktop systemd[1]: tigervncserver@:1.service: Control process exited, code=exited, stat>
Dez 11 14:31:33 kubuntu-desktop systemd[1]: tigervncserver@:1.service: Failed with result 'exit-code'.
Dez 11 14:31:33 kubuntu-desktop systemd[1]: Failed to start Remote desktop service (VNC) for :1 display.

Es scheint die Home-Variable zu fehlen. Wie aber soll die vorgegeben werden, wenn noch kein Benutzer angemeldet ist?

Newubunti

Anmeldungsdatum:
16. Februar 2008

Beiträge: 4768

Hallo,

ich habe das mal mit zwei virtuellen Maschinen probiert. Der Server ist ein normales Kubuntu 22.04. Der Client ein Ubuntu 22.04 und bei mir funktioniert das nach Anleitung. Was mich an Deiner systemctl status Ausgabe stutzig macht:

    Process: 5185 ExecStartPre=/usr/bin/vncserver -kill ::1 > /dev/null 2>&1 (code=exited, status=1/FAILURE)
    Process: 5188 ExecStart=/usr/bin/vncserver ::1 -localhost no (code=exited, status=1/FAILURE)

Kann es sein, dass Du da irgendwie noch Altlasten von einem vorigen Versuch hast?

Denn bei mir sieht die tigervncserver@:1.service so aus:

systemctl cat tigervncserver@.service 
# /lib/systemd/system/tigervncserver@.service
# The tigervncserver service unit file
#
# Quick HowTo:
# 1. Add a user mapping to /etc/tigervnc/vncserver.users.
# 2. Adjust the global or user configuration. See the
#    tigervncsession(8) manpage for details. (OPTIONAL)
# 3. Run `systemctl enable tigervncserver@:<display>.service`
# 4. Run `systemctl start tigervncserver@:<display>.service`
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted!  For a secure way of using VNC, you should
# limit connections to the local host and then tunnel from
# the machine you want to view VNC on (host A) to the machine
# whose VNC output you want to view (host B)
#
# [user@hostA ~]$ ssh -v -C -L 590N:localhost:590M hostB
#
# this will open a connection on port 590N of your hostA to hostB's port 590M
# (in fact, it ssh-connects to hostB and then connects to localhost (on hostB).
# See the ssh man page for details on port forwarding)
#
# You can then point a VNC client on hostA at vncdisplay N of localhost and with
# the help of ssh, you end up seeing what hostB makes available on port 590M
#
# Use "nolisten=tcp" to prevent X connections to your VNC server via TCP.
#
# Use "localhost" to prevent remote VNC clients connecting except when
# doing so through a secure tunnel.  See the "-via" option in the
# `man vncviewer' manual page.


[Unit]
Description=Remote desktop service (VNC)
After=network.target

[Service]
Type=forking
ExecStart=/usr/libexec/tigervncsession-start %i
PIDFile=/run/tigervncsession-%i.pid
SELinuxContext=system_u:system_r:vnc_session_t:s0

[Install]
WantedBy=multi-user.target

Da kommen also die beiden Zeilen von Dir oben gar nicht vor. Was gibt bei Dir der folgende Befehl aus?:

cat /lib/systemd/system/tigervncserver@.service

LG, Newubunti

marmor

(Themenstarter)

Anmeldungsdatum:
15. Juni 2022

Beiträge: 6

Hallo,

ich habe es nun noch einmal nachvollzogen. Du hattest recht, da waren noch Anpassungen in der service-Datei. Ich habe alles rückgängig gemacht, die Konfigurationen noch einmal geprüft und auch zusätzliche Software entfernt, sodass wirklich nur noch der tigervnc-Server auf dem System ist.

Der Dienst läuft nun. Dafür schon einmal vielen Dank!

Allerdings bin ich dann sofort angemeldet und sehe nicht erst die Anmeldeseite. Gibt es eine Möglichkeit dies mit TigerVNC zu erreichen?

Grüße

marmor

Newubunti

Anmeldungsdatum:
16. Februar 2008

Beiträge: 4768

marmor schrieb:

Allerdings bin ich dann sofort angemeldet und sehe nicht erst die Anmeldeseite. Gibt es eine Möglichkeit dies mit TigerVNC zu erreichen?

Was stört Dich hier konkret bzw. für was brauchst Du die "normale" Anmeldeseite denn? Sofort angemeldet stimmt ja auch nicht wirklich. Du solltest ja - wenn Du dem HowTo gefolgt bist - beim Aufbau des SSH-Tunnels nach Benutzerpasswort gefragt werden.

Ich dachte das ist eine Headless-Konfiguration. Oder brauchst Du nun doch gleichzeitig lokales grafisches Login und grafischen Zugriff aus der Ferne?

LG, Newubunti

marmor

(Themenstarter)

Anmeldungsdatum:
15. Juni 2022

Beiträge: 6

Die Verbindung wird über einen Guacamole-Server hergestellt. Der Anwender meldet sich also am Guacamole-Frontend an, wählt eine Verbindung (z. B. die zum Kubuntu-Desktop) aus und Guacamole baut die Verbindung auf. Der Kubuntu-Desktop wird dann mittels HTML5 im Browser angezeigt. Das funktioniert soweit ganz gut. Es ist allerdings nicht möglich die Verbindung mit Guacamole über SSH abzusichern. Ich könnte zwar eine SSH-Verbindung aufbauen (geht mit Guacamole auch), aber dazu muss ich dann die Benutzer-Zugangsdaten in Guacamole speichern. Mir wäre es daher lieber, ich könnte einfach mittels VNC die Verbindung zum Desktop aufbauen. Dort muss sich der Anwender allerdings dann mit seinen persönlichen Zugangsdaten noch einmal verifizieren. Ich glaube zwar nicht, dass sich jemand von außen einklinken würde, weil alles hinter einer Firewall liegt, aber ich hätte diese zusätzliche Sicherheitsinstanz dennoch gerne dazwischen.

Newubunti

Anmeldungsdatum:
16. Februar 2008

Beiträge: 4768

Ok, so wie Du es nun beschreibst wäre xrdp für Dich besser geeignet, denn dort hat man beim Verbinden zwar nicht den gewöhnlichen Greeter, aber eine einfache Maske zur Eingabe von Linux Benutzername und Passwort schon.

Warum das bei Dir nicht funktioniert, kann ich nicht nachvollziehen. xrdp kann ich auf einem Kubuntu 22.04 Desktop einfach installieren und anschließend sofort nutzen. Dass Du mit dem selben Nutzer nicht zur gleichen Zeit lokal am "Server" (Deinem Kubuntu Desktop) und aus der Ferne über RDP angemeldet sein kannst ist Dir bewusst?

Das ist bei Dir eine normale Kubuntu Desktop Installation?

Ansonsten noch mal zu VNC:

Wenn Du das in gleicher Weise für VNC nutzen wolltest, dann ist das derzeit AFAIK - das "K" bezieht sich dabei vor allem auf Ubuntu - ein ziemliches gehacke. Denn dann musst Du doch den jeweiligen Desktop eines angemeldeten Nutzers übertragen. Bei Ubuntu ist es dabei so, dass der Greeter seit gdm3 unter dem Nutzer gdm läuft und Du damit mit einer VNC-Session zum Greeter verbinden musst. Anschließend meldest Du den jeweiligen Nutzer dort an und musst dann mittels zweiter VNC-Sitzung auf dessen sich dann öffnende Session verbinden. Das ist für x11vnc hier beschrieben:

https://tips.graphica.com.au/ubuntu-and-remote-gnome-desktop/

Das wäre mir für ein Produktiv-Umfeld allerdings auch zu potentiell störanfällig. Sicherheitstechnisch fehlt mir die Expertise, um diesen Hack zu beurteilen.

Allerdings verwendet KDE sddm als Greeter, da ist es möglicherweise anders gelagert!? Das weiß ich nicht und müsstest Du dann selbst probieren.

Jedenfalls wärst Du bei dieser Variante wieder bei einem VNC-Server, wie x11vnc - also solchen die die Session eines lokal angemeldeten Nutzers übertragen können. Das geht mit tigervnc-standalone-server nicht - AFAIK.

Ich bin allerdings auch kein VNC-Spezialist.

LG, Newubunti

Antworten |