Autor Thema: VNC Zugriff auf KDE Desktop  (Gelesen 159 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline MarkusMNT

  • Neuling
  • *
  • Beiträge: 3
  • Karma: +0/-0
  • Desktop: KDE
  • Grafikkarte: Verschiedene
  • Grafikkartentreiber: Verschiedene
  • Prozessor: Verschiedene
  • Skill: Durchschnitt
  • Zweig: stable
VNC Zugriff auf KDE Desktop
« am: 28. Juli 2020, 12:22:42 »
Hallo !

Ich will von einem Manjaro KDE System auf ein anders Manjaro KDE System über LAN per VNC zugreifen.

An dem System auf das zugegriffen werden soll, wird nur bei bedarf ein Monitor angeschlossen,
ist also "headless". Hier habe ich bereits TigerVNC nach dieser Anleitung
https://wiki.archlinux.org/index.php/TigerVNC
installiert, und das system so eingerichtet, das der VNC Server mit  x0vncserver -rfbauth ~/.vnc/passwd  startet.
Clientseitig verwende ich KRDC. Remmina will ich nur ungern verwenden, riecht mir etwas zu sehr nach Spyware...

Ich bekomme eine Verbindung, alles funktioniert soweit, ABER :
In der ~/.vnc/config habe ich  geometry=1920x1080  gesetzt, was der auflösung des Monitors dort entspricht.
Wenn der Monitor aber nicht angeschlossen ist, habe ich über VNC nur 640x480, damit kann ich nichts anfangen.
In der /etc/default/grub habe ich auch testweise  GRUB_CMDLINE_LINUX="nomodeset"  gesetzt, hat auch nichts gebracht.

Wie und wo konfiguriert man das richtig ?
Der Wiki Artikel oben ist nicht wirklich hilfreich.


Offline MarkusMNT

  • Neuling
  • *
  • Beiträge: 3
  • Karma: +0/-0
  • Desktop: KDE
  • Grafikkarte: Verschiedene
  • Grafikkartentreiber: Verschiedene
  • Prozessor: Verschiedene
  • Skill: Durchschnitt
  • Zweig: stable
Re: VNC Zugriff auf KDE Desktop
« Antwort #1 am: 07. August 2020, 23:43:18 »
Ok, das war etwas viel auf einmal auf den ersten Blick in dem Wiki,
aber habe es nun doch hinbekommen :

3 Einträge in der /etc/default/grub
habe ich so angepasst :
...
GRUB_CMDLINE_LINUX="nomodeset"
GRUB_GFXMODE=1920x1080
GRUB_GFXPAYLOAD_LINUX=1920x1080
...
danach noch
sudo update-grub

Damit fährt die Kiste auch hoch, wenn kein Monitor angeschlossen ist.
Ob das dann auch noch funktioniert wenn die Grafikkarte ausgebaut ist, muss ich noch testen...
Zuerst den TigerVNC Server installiert :
sudo pacman -S tigervnc
Danach den VNC-Server das erste mal gestartet (ohne sudo !) und ein Passwort vergeben :
vncserver
Danach wieder beendet
vncserver -kill :1
Danach die xstartup angepasst :
nano ~/.vnc/xstartup
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec dbus-launch startplasma-x11
Danach noch die config
nano ~/.vnc/config
securitytypes=vncauth,tlsvnc
desktop=sandbox
geometry=1920x1080
# localhost
alwaysshared
Danach noch den Eintrag für systemd erstellt :
sudo nano /etc/systemd/system/vncserver@.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=markus
WorkingDirectory=/home/markus
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %i -geometry 1920x1080 -alwaysshared
ExecStop=/usr/bin/vncserver -kill %i

[Install]
WantedBy=multi-user.target
Danach den VNC-Server über systemd gestartet :
sudo systemctl start vncserver@:1.service
Danach noch überprüft, ob er läuft oder Fehler anliegen :
sudo systemctl status vncserver@:1.service
Und schliesslich eingestellt, das er beim Systemstart automatisch
mitgestartet wird :
sudo systemctl enable vncserver@:1.service
Das funktioniert alles soweit, nur ein Problem gibt es noch :
Z.b. in KDE unter
Startmenü > Software hinzufügen/entfernen
kommt ja immer wenn man etwas installieren will,
die Passwort abfrage.
Wenn ich jetzt über VNC verbunden bin, kommt sofort eine
Fehlermeldung das die Authentifizierung fehlgeschlagen wäre
und ich kann nichts installieren. Bei anderen KDE Anwendungen
die eine Authentifizierung erfordern, ebenfalls.

Was muss man da einstellen, damit das geht ?
Doch hoffentlich nicht den VNC Server als root laufenlassen ?

Offline MarkusMNT

  • Neuling
  • *
  • Beiträge: 3
  • Karma: +0/-0
  • Desktop: KDE
  • Grafikkarte: Verschiedene
  • Grafikkartentreiber: Verschiedene
  • Prozessor: Verschiedene
  • Skill: Durchschnitt
  • Zweig: stable
Re: VNC Zugriff auf KDE Desktop
« Antwort #2 am: 10. August 2020, 16:47:26 »
Und weiter geht's, Planänderung :


Mit dem TigerVNC Server funktioniert die Passwortabfrage, wie oben beschrieben, in KDE nicht.
Das wusste ich vorher nicht. Daher bin ich jetzt auf den x11vnc Server umgestiegen.
Dieser hat eine andere Funktionsweise wie der TigerVNC Server.
Den TigerVNC Server habe ich daher De-installiert, die systemd und config files davon
entfernt.
Beim einrichten vom x11vnc Server bin ich nach dieser Anleitung vorgegangen :
https://wiki.archlinux.org/index.php/X11vnc
Auf diesem Rechner habe ich ausserdem autologin eingestellt, er bootet und meldet
sich also direkt mit meinem useraccount an und startet durch bis zur KDE Oberfläche.
Zuerst den x11vnc Server Installiert :
sudo pacman -S x11vnc
Danach noch das VNC-Zugriffspasswort erstellt (ohne sudo !) :
x11vnc --storepasswd ~/.vnc/passwd
Danach habe ich das System für "headless" betrieb eingerichtet.
Wer seinen Rechner auch weiterhin trotz VNC Zugriff ganz normal mit angeschlossenem
Monitor betreiben will, braucht den xf86-video-dummy
Treiber nicht zu installieren, womit die Datei 10-headless.conf
im nächsten schritt dann auch entfällt:
sudo pacman -S xf86-video-dummy
Danach noch die Datei /etc/X11/xorg.conf.d/10-headless.conf
mit Folgendem Inhalt erstellt :
sudo nano /etc/X11/xorg.conf.d/10-headless.conf
Section "Monitor"
        Identifier "dummy_monitor"
        HorizSync 28.0-80.0
        VertRefresh 48.0-75.0
        Modeline "1920x1080" 172.80 1920 2040 2248 2576 1080 1081 1084 1118
EndSection

Section "Device"
        Identifier "dummy_card"
        VideoRam 256000
        Driver "dummy"
EndSection

Section "Screen"
        Identifier "dummy_screen"
        Device "dummy_card"
        Monitor "dummy_monitor"
        SubSection "Display"
        EndSubSection
EndSection
Anmerkung :
Lustig ist hier, wenn ich den Rechner herunterfahre, den Monitor wieder anschliesse
und neu starte, bekomme ich trotzdem kein Bild mehr.
(was in DIESEM fall aber nicht weiter schlimm ist)
Das ist übrigens unabhängig davon, ob in der /etc/default/grub
GRUB_CMDLINE_LINUX="nomodeset" aktiviert ist, oder nicht.
Lösche ich die /etc/X11/xorg.conf.d/10-headless.conf, habe ich wieder ein Bild.
Anscheinend rafft das X11? KDE? SDDM? nicht,
ob wieder ein Monitor angeschlossen ist oder nicht.
(Monitor erkannt -> Normaler betrieb. Kein Monitor erkannt -> automatisch umschalten auf headless betrieb)
Das hätten die Entwickler auch besser lösen können ...   *duck und weg*


Danach den automatischen Start über systemd eingerichtet.
Anmerkung :
So wie das im Wiki steht, funktioniert das übrigens NICHT.
Da kommen irgendwelche komischen Fehlermeldungen und der start wird verweigert.
Wahrscheinlich ist systemd irgendwie verbugt, keine ahnung was da los ist.
Daher habe ich den Inhalt selbst angepasst :
sudo systemctl edit x11vnc.service
[Unit]
Description=x11vnc Server beim Booten starten

[Service]
Type=oneshot
User=markus
WorkingDirectory=/home/markus
ExecStart=/usr/bin/x11vnc -many -display :0 -rfbport 5901 -rfbauth /home/markus/.vnc/passwd
ExecStop=/usr/bin/kill $(/usr/bin/pidof x11vnc)

[Install]
WantedBy=graphical.target
Danach den x11vnc Server gestartet :
sudo systemctl start x11vnc.service
Danach festgelegt, das er bei jedem Neustart aktiviert wird :
sudo systemctl enable x11vnc.service
Wenn alles geklappt hat, sollte das nach einem Reboot so aussehen :
sudo systemctl status x11vnc.service
● x11vnc.service - x11vnc Server beim booten starten
     Loaded: loaded (/usr/lib/systemd/system/x11vnc.service; enabled; vendor preset: disabled)
    Drop-In: /etc/systemd/system/x11vnc.service.d
             └─override.conf
     Active: activating (start) since Mon 2020-08-10 12:46:23 CEST; 1h 16min ago
    Process: 663 ExecStart=/usr/bin/x11vnc (code=exited, status=0/SUCCESS)
   Main PID: 1308 (x11vnc)
      Tasks: 1 (limit: 9457)
     Memory: 19.9M
     CGroup: /system.slice/x11vnc.service
             └─1308 /usr/bin/x11vnc -many -display :0 -rfbport 5901 -rfbauth /home/markus/.vnc/passwd
...
und
sudo netstat -pan | grep "LISTEN"
tcp         0      0 0.0.0.0:22                0.0.0.0:*           LISTEN      566/sshd: /usr/bin/           
tcp         0      0 0.0.0.0:5901            0.0.0.0:*           LISTEN      1308/x11vnc         
tcp6       0      0 :::22                         :::*                    LISTEN      566/sshd: /usr/bin/           
tcp6       0      0 :::5900                     :::*                    LISTEN      1308/x11vnc         
tcp6       0      0 :::5901                     :::*                    LISTEN      1308/x11vnc         
...
Anmerkung :
Möchte man seinen VNC Server Verschlüsselt über SSH Tunnel erreichen, z.b. übers Internet, dann einfach beim
ExecStart= aufruf noch den -localhost Parameter hinzufügen, damit hört der Server dann auf 127.0.0.1
und man kann seinen SSH Tunnel darauf einstellen. In diesem Fall ist es dann aber besser, man ändert
auch noch die standard SSH Ports 22 und -rfbport 5901 auf andere Werte. In meinem Fall wäre das aber overkill,
da nutzung nur im LAN.

Damit funktioniert jetzt alles so wie es soll.