Problème avec vncserver (tightvncserver) ?

Vous avez réalisé ou vous voulez réaliser un truc impensable avec votre Raspberry Pi ? Cet endroit est pour vous...

Modérateur : Francois

Répondre
Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Problème avec vncserver (tightvncserver) ?

Message par Artemus24 » lun. 21 sept. 2020 17:51

Salut à tous.

J'utilise comme vncserver : tightvncserver.

J'ai un problème avec mon vnc. Il se peut que je le configure mal !
J'ai deux services, dont l'un est pour obtenir le bureau du compte root et l'autre pour le bureau du compte pi.
Le service du compte pi ne démarre pas alors que par windows sous vnc viewer, j'accède au bureau du compte pi.
Je ne comprends pas pourquoi. Normalement, je ne devrais pas avoir accès au bureau du compte pi.
Par contre, aucun problème avec le service du compte root.

je procède comme ci-après à la configuration de vncserver .
Je suis dans le compte root à la racine :

Code : Tout sélectionner

~> vncserver :1

You will require a password to access your desktops.

Password:
Verify:
Would you like to enter a view-only password (y/n)? n

New 'X' desktop is raspberrypi:1

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/raspberrypi:1.log

~> cd .vnc
~/.vnc> la
total 24
drwx------  2 root root 4096 sept. 21 16:40 .
drwx------ 17 root root 4096 sept. 21 16:40 ..
-rw-------  1 root root    8 sept. 21 16:40 passwd
-rw-r--r--  1 root root  744 sept. 21 16:40 raspberrypi:1.log
-rw-r--r--  1 root root    5 sept. 21 16:40 raspberrypi:1.pid
-rwxr-xr-x  1 root root  225 sept. 21 16:40 xstartup
~/.vnc>
Maintenant, je me mets dans le compte pi :

Code : Tout sélectionner

~> vncserver :2

You will require a password to access your desktops.

Password:
Warning: password truncated to the length of 8.
Verify:
Would you like to enter a view-only password (y/n)? n

New 'X' desktop is raspberrypi:2

Creating default startup script /home/pi/.vnc/xstartup
Starting applications specified in /home/pi/.vnc/xstartup
Log file is /home/pi/.vnc/raspberrypi:2.log

~> cd .vnc
~/.vnc> la
total 24
drwx------  2 pi pi 4096 sept. 21 16:42 .
drwxr-xr-x 21 pi pi 4096 sept. 21 16:42 ..
-rw-------  1 pi pi    8 sept. 21 16:42 passwd
-rw-r--r--  1 pi pi  747 sept. 21 16:42 raspberrypi:2.log
-rw-r--r--  1 pi pi    5 sept. 21 16:42 raspberrypi:2.pid
-rwxr-xr-x  1 pi pi  225 sept. 21 16:42 xstartup
~/.vnc>
~/.vnc>
A priori, mes deux comptes vnc ont bien été créés.

J'installe dans "/etc/systemd/system" les deux services que je lance.
Voici le service "vncserver_root.service" :

Code : Tout sélectionner

[Unit]
Description=Service de bureau à distance (VNC) pour Root
After=syslog.target network.target

[Service]
Type=forking
User=root
WorkingDirectory=/root
PAMName=login
PIDFile=/root/.vnc/%H:1.pid
ExecStartPre=-/usr/bin/vncserver -kill :1 > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1
ExecStop=/usr/bin/vncserver -kill :1 > /dev/null 2>&1

[Install]
WantedBy=multi-user.target
~
Et voilà le service "vncserver_pi.service" :

Code : Tout sélectionner

[Unit]
Description=Service de bureau à distance (VNC) pour Pi
After=syslog.target network.target

[Service]
Type=forking
User=pi
WorkingDirectory=/home/pi
PAMName=login
PIDFile=/home/pi/.vnc/%H:2.pid
ExecStartPre=-/usr/bin/vncserver -kill :2 > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :2
ExecStop=/usr/bin/vncserver -kill :2 > /dev/null 2>&1

[Install]
WantedBy=multi-user.target
~
Les deux services sont identiques sauf en ce qui concerne les comptes pi et root et l'emplacement du répertoire .vnc.

Voici le status des deux services.
Je me suis créé un script bash afin de ne pas retaper les mêmes commandes à chaque fois :

Code : Tout sélectionner

Installation des services vnc
=============================

+---------------------------+
| Copie du fichier xstartup |
+---------------------------+


+--------------------+
| Copie des services |
+--------------------+


+-----------------------------+
| Service VNCserver pour Root |
+-----------------------------+

Created symlink /etc/systemd/system/multi-user.target.wants/vncserver_root.service ? /etc/systemd/system/vncserver_root.service.
? vncserver_root.service - Service de bureau à distance (VNC) pour Root
   Loaded: loaded (/etc/systemd/system/vncserver_root.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2020-09-21 16:47:07 CEST; 78ms ago
  Process: 1805 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS)
  Process: 1814 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
 Main PID: 1866 (Xtightvnc)
    Tasks: 0 (limit: 4915)
   CGroup: /system.slice/vncserver_root.service
           ? 1866 Xtightvnc :1 -desktop X -auth /root/.Xauthority -geometry 1280x800 -depth 24 -rfbwait 120000 -rfbauth /root/.vnc/passwd -rfb

sept. 21 16:47:06 raspberrypi systemd[1]: Starting Service de bureau à distance (VNC) pour Root...
sept. 21 16:47:06 raspberrypi systemd[1805]: pam_unix(login:session): session opened for user root by (uid=0)
sept. 21 16:47:06 raspberrypi vncserver[1805]: Killing Xtightvnc process ID 1069
sept. 21 16:47:06 raspberrypi systemd[1814]: pam_unix(login:session): session opened for user root by (uid=0)
sept. 21 16:47:07 raspberrypi systemd[1]: Started Service de bureau à distance (VNC) pour Root.

+---------------------------+
| Service VNCserver pour Pi |
+---------------------------+

Created symlink /etc/systemd/system/multi-user.target.wants/vncserver_pi.service ? /etc/systemd/system/vncserver_pi.service.
Job for vncserver_pi.service failed because the service did not take the steps required by its unit configuration.
See "systemctl status vncserver_pi.service" and "journalctl -xe" for details.
? vncserver_pi.service - Service de bureau à distance (VNC) pour Pi
   Loaded: loaded (/etc/systemd/system/vncserver_pi.service; enabled; vendor preset: enabled)
   Active: failed (Result: protocol) since Mon 2020-09-21 16:47:11 CEST; 32ms ago
  Process: 2142 ExecStartPre=/usr/bin/vncserver -kill :2 > /dev/null 2>&1 (code=exited, status=0/SUCCESS)
  Process: 2151 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :2 (code=exited, status=0/SUCCESS)

sept. 21 16:47:10 raspberrypi systemd[1]: Starting Service de bureau à distance (VNC) pour Pi...
sept. 21 16:47:10 raspberrypi systemd[2142]: pam_unix(login:session): session opened for user pi by (uid=0)
sept. 21 16:47:10 raspberrypi systemd[2151]: pam_unix(login:session): session opened for user pi by (uid=0)
sept. 21 16:47:11 raspberrypi systemd[1]: vncserver_pi.service: New main PID 2194 does not belong to service, and PID file is not owned by root
sept. 21 16:47:11 raspberrypi systemd[1]: vncserver_pi.service: New main PID 2194 does not belong to service, and PID file is not owned by root
sept. 21 16:47:11 raspberrypi systemd[1]: vncserver_pi.service: Failed with result 'protocol'.
sept. 21 16:47:11 raspberrypi systemd[1]: Failed to start Service de bureau à distance (VNC) pour Pi.
Comme on peut le voir, le service root a bien démarré mais celui du pi c'est arrêté en erreur.
Ce qui est bizarre dans ce bug, j'arrive à accèder sous windows par "vnc viewer" aussi bien au bureau du compte root qu'au bureau du compte pi et même plusieurs fois de suite.

J'ai fait le test de suppression du service root puisqu'il fonctionne et j'ai rebooté la raspberry.

Code : Tout sélectionner

~> systemctl disable vncserver_root.service
Removed /etc/systemd/system/multi-user.target.wants/vncserver_root.service.
~> systemctl stop vncserver_root.service
~> reboot
Je fais le test de l'accès au bureau du compte pi. J'accède bien au bureau du compte pi !
Voici le statut du service "vncserver_pi.service" :

Code : Tout sélectionner

~> systemctl status vncserver_pi.service
? vncserver_pi.service - Service de bureau à distance (VNC) pour Pi
   Loaded: loaded (/etc/systemd/system/vncserver_pi.service; enabled; vendor preset: enabled)
   Active: failed (Result: protocol) since Mon 2020-09-21 16:59:23 CEST; 5min ago
  Process: 822 ExecStartPre=/usr/bin/vncserver -kill :2 > /dev/null 2>&1 (code=exited, status=2)
  Process: 886 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :2 (code=exited, status=0/SUCCESS)

sept. 21 16:59:19 raspberrypi systemd[1]: Starting Service de bureau à distance (VNC) pour Pi...
sept. 21 16:59:20 raspberrypi systemd[822]: pam_unix(login:session): session opened for user pi by (uid=0)
sept. 21 16:59:22 raspberrypi systemd[886]: pam_unix(login:session): session opened for user pi by (uid=0)
sept. 21 16:59:23 raspberrypi systemd[1]: vncserver_pi.service: New main PID 909 does not belong to service, and PID file is not owned by root
sept. 21 16:59:23 raspberrypi systemd[1]: vncserver_pi.service: New main PID 909 does not belong to service, and PID file is not owned by root
sept. 21 16:59:23 raspberrypi systemd[1]: vncserver_pi.service: Failed with result 'protocol'.
sept. 21 16:59:23 raspberrypi systemd[1]: Failed to start Service de bureau à distance (VNC) pour Pi.
~>
~>
Bizarre, je n'y comprends rien !

J'ai bien sûr désinstallé puis résintallé tightvncserver, refait plusieurs manipulations sans que cela change quoi que ce soit à mon problème.

Questions :

1) est-ce que mes deux services sont correctes ?

2) où trouver la signifiaction des statuts ?

3) il me semble que le service "vncserver_pi.service" fonctionne puisque je peux accéder au bureau du compte pi.
Par contre, je ne comprends pas la signification de ces erreurs.

Voici un autre exemple d'erreur :

Code : Tout sélectionner

~> systemctl status vncserver_pi.service
? vncserver_pi.service - Service de bureau à distance (VNC) pour Pi
   Loaded: loaded (/etc/systemd/system/vncserver_pi.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2020-09-21 17:30:36 CEST; 15min ago
  Process: 1826 ExecStartPre=/usr/bin/vncserver -kill :2 > /dev/null 2>&1 (code=exited, status=2)
  Process: 1833 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :2 (code=exited, status=98)

sept. 21 17:30:36 raspberrypi systemd[1]: Starting Service de bureau à distance (VNC) pour Pi...
sept. 21 17:30:36 raspberrypi systemd[1826]: pam_unix(login:session): session opened for user pi by (uid=0)
sept. 21 17:30:36 raspberrypi systemd[1833]: pam_unix(login:session): session opened for user pi by (uid=0)
sept. 21 17:30:36 raspberrypi systemd[1]: vncserver_pi.service: Control process exited, code=exited, status=98/n/a
sept. 21 17:30:36 raspberrypi systemd[1]: vncserver_pi.service: Failed with result 'exit-code'.
sept. 21 17:30:36 raspberrypi systemd[1]: Failed to start Service de bureau à distance (VNC) pour Pi.
~>
Que signifie ce statut = 98 ?

4) est-ce que la procédure de la configuration vnc du compte pi est correcte ?
A savoir que je dois me mettre dans le compte pi (et non dans le compte root), et lancer "vncserver :2".
A priori, je pense que oui. Le répertoire .vnc a pour propriétaire pi.

5) je n'ai pas de problème avec le service "vncserver_root.service" ni avec le bureau du compte root.
Est-ce un problème de droit ?

6) je me demande si le fait d'avoir deux services ne serait pas la cause de mon problème ?

@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Problème avec vncserver (tightvncserver) ?

Message par Artemus24 » lun. 21 sept. 2020 17:59

Je me suis dit que j'allais changer les droits du répertoires .vnc dans le compte pi.
Au lieu de pi, j'ai mis root et j'ai relancé le service "vncserver_pi.service".
Voici le statut du service :

Code : Tout sélectionner

~> systemctl start vncserver_pi.service
Job for vncserver_pi.service failed because the control process exited with error code.
See "systemctl status vncserver_pi.service" and "journalctl -xe" for details.
~> systemctl status  vncserver_pi.service
● vncserver_pi.service - Service de bureau à distance (VNC) pour Pi
   Loaded: loaded (/etc/systemd/system/vncserver_pi.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2020-09-21 17:55:26 CEST; 6s ago
  Process: 1706 ExecStartPre=/usr/bin/vncserver -kill :2 > /dev/null 2>&1 (code=exited, status=13)
  Process: 1713 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :2 (code=exited, status=255/EXCEPTION)

sept. 21 17:55:26 raspberrypi systemd[1]: Starting Service de bureau à distance (VNC) pour Pi...
sept. 21 17:55:26 raspberrypi systemd[1706]: pam_unix(login:session): session opened for user pi by (uid=0)
sept. 21 17:55:26 raspberrypi systemd[1713]: pam_unix(login:session): session opened for user pi by (uid=0)
sept. 21 17:55:26 raspberrypi systemd[1]: vncserver_pi.service: Control process exited, code=exited, status=255/EXCEPTION
sept. 21 17:55:26 raspberrypi systemd[1]: vncserver_pi.service: Failed with result 'exit-code'.
sept. 21 17:55:26 raspberrypi systemd[1]: Failed to start Service de bureau à distance (VNC) pour Pi.
~>
D'autres codes statut dont je ne connais pas la signification.

Cette fois-ci, je n'ai pas accès au bureau du compte pi.
Le message d'anomalie est : "the server is not configured properly".

@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Problème avec vncserver (tightvncserver) ?

Message par Artemus24 » mar. 22 sept. 2020 05:06

Salut à tous.

D'après ce que j'ai pu comprendre, le script du service a changé, à cause d'une gestion différente du PID.
J'ai trouvé quelques explications ci-après :
--> https://community.oracle.com/thread/4286364

Je me suis inspiré du dernier post, soit :

Code : Tout sélectionner

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

[Service]
Type=forking
User=<USER>
WorkingDirectory=/home/<USER>

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %i -geometry 1600x900
PIDFile=/home/<USER>/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target
Je retrouve des explications similaires ci-après :
--> https://askubuntu.com/questions/1044464 ... ed-by-root

Ce qui se résume à la suppression de cette ligne dans mes deux services :

Code : Tout sélectionner

PAMName=login
Oui, j'ai quand même laissé l'accès au PID.

Quand je reteste les deux services, voici ce que j'obtiens maintenant :

Code : Tout sélectionner

~> systemctl status vncserver_root.service
? vncserver_root.service - Service de bureau à distance (VNC) pour Root
   Loaded: loaded (/etc/systemd/system/vncserver_root.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-09-22 04:47:12 CEST; 3min 49s ago
  Process: 830 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2)
  Process: 887 ExecStart=/usr/bin/vncserver :1 -depth 24 -geometry 1280x800 (code=exited, status=0/SUCCESS)
 Main PID: 914 (Xtightvnc)
    Tasks: 0 (limit: 4915)
   CGroup: /system.slice/vncserver_root.service
           ? 914 Xtightvnc :1 -desktop X -auth /root/.Xauthority -geometry 1280x800 -depth 24 -rfbwait 120000 -rfbauth /root/.vnc/passwd -rfbp

sept. 22 04:47:08 raspberrypi systemd[1]: Starting Service de bureau à distance (VNC) pour Root...
sept. 22 04:47:09 raspberrypi systemd[830]: pam_unix(login:session): session opened for user root by (uid=0)
sept. 22 04:47:11 raspberrypi systemd[887]: pam_unix(login:session): session opened for user root by (uid=0)
sept. 22 04:47:12 raspberrypi systemd[1]: Started Service de bureau à distance (VNC) pour Root.
~>
~>
~> systemctl status vncserver_pi.service
? vncserver_pi.service - Service de bureau à distance (VNC) pour Pi
   Loaded: loaded (/etc/systemd/system/vncserver_pi.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-09-22 04:47:11 CEST; 4min 1s ago
  Process: 828 ExecStartPre=/usr/bin/vncserver -kill :2 > /dev/null 2>&1 (code=exited, status=2)
  Process: 861 ExecStart=/usr/bin/vncserver :2 -depth 24 -geometry 1280x800 (code=exited, status=0/SUCCESS)
    Tasks: 53 (limit: 4915)
   CGroup: /system.slice/vncserver_pi.service
           +- 874 Xtightvnc :2 -desktop X -auth /home/pi/.Xauthority -geometry 1280x800 -depth 24 -rfbwait 120000 -rfbauth /home/pi/.vnc/passw
           +- 894 /bin/sh /home/pi/.vnc/xstartup
           +- 916 /usr/bin/lxsession -s LXDE-pi -e LXDE
           +- 927 dbus-launch --autolaunch 678bfdc4434345208da5f1341865986e --binary-syntax --close-stderr
           +- 928 /usr/bin/dbus-daemon --syslog-only --fork --print-pid 5 --print-address 7 --session
           +-1001 /usr/bin/dbus-launch --exit-with-session --sh-syntax
           +-1003 /usr/bin/dbus-daemon --syslog --fork --print-pid 5 --print-address 7 --session
           +-1038 /usr/bin/ssh-agent x-session-manager
           +-1137 /usr/lib/gvfs/gvfsd
           +-1148 /usr/lib/gvfs/gvfsd-fuse /home/pi/.gvfs -f -o big_writes
           +-1156 openbox --config-file /home/pi/.config/openbox/lxde-pi-rc.xml
           +-1165 lxpolkit
           +-1179 lxpanel --profile LXDE-pi
           +-1181 pcmanfm --desktop --profile LXDE-pi
           +-1196 /usr/bin/ssh-agent -s
           +-1281 /usr/lib/menu-cache/menu-cached /home/pi/.cache/menu-cached-:2
           +-1290 /usr/lib/gvfs/gvfs-udisks2-volume-monitor
           +-1299 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
           +-1310 /usr/lib/gvfs/gvfs-goa-volume-monitor
           +-1319 /usr/lib/gvfs/gvfs-mtp-volume-monitor
           +-1334 /usr/lib/gvfs/gvfs-afc-volume-monitor
           +-1392 /usr/lib/gvfs/gvfsd-trash --spawner :1.2 /org/gtk/gvfs/exec_spaw/0

sept. 22 04:47:21 raspberrypi dbus-daemon[1003]: [session uid=1000 pid=1000] Successfully activated service 'org.gtk.vfs.UDisks2VolumeMonitor'
sept. 22 04:47:21 raspberrypi dbus-daemon[1003]: [session uid=1000 pid=1000] Activating service name='org.gtk.vfs.GPhoto2VolumeMonitor' reques
sept. 22 04:47:21 raspberrypi dbus-daemon[1003]: [session uid=1000 pid=1000] Successfully activated service 'org.gtk.vfs.GPhoto2VolumeMonitor'
sept. 22 04:47:21 raspberrypi dbus-daemon[1003]: [session uid=1000 pid=1000] Activating service name='org.gtk.vfs.GoaVolumeMonitor' requested
sept. 22 04:47:21 raspberrypi dbus-daemon[1003]: [session uid=1000 pid=1000] Successfully activated service 'org.gtk.vfs.GoaVolumeMonitor'
sept. 22 04:47:21 raspberrypi dbus-daemon[1003]: [session uid=1000 pid=1000] Activating service name='org.gtk.vfs.MTPVolumeMonitor' requested
sept. 22 04:47:22 raspberrypi dbus-daemon[1003]: [session uid=1000 pid=1000] Successfully activated service 'org.gtk.vfs.MTPVolumeMonitor'
sept. 22 04:47:22 raspberrypi dbus-daemon[1003]: [session uid=1000 pid=1000] Activating service name='org.gtk.vfs.AfcVolumeMonitor' requested
sept. 22 04:47:22 raspberrypi org.gtk.vfs.AfcVolumeMonitor[1003]: Volume monitor alive
sept. 22 04:47:22 raspberrypi dbus-daemon[1003]: [session uid=1000 pid=1000] Successfully activated service 'org.gtk.vfs.AfcVolumeMonitor'
~>
J'ai encore le status=2 mais les deux services sont dorénavant en "Active: active (running)". C'est ce que je désirais, à savoir un service opérationnel.

Si je lance le vnc viewer pour le bureau du compte pi, j'ai, lors du premier accès, le message suivant : "erreur : no session for pid 2710".
Inversement avec le bureau pour le compte root, je n'ai pas ce message.

Je dois comprendre que c'est un bug dans la gestion différente du PID sous systemctl qui provoque le plantage du service vncserver_pi.service.
Je n'en sais pas plus à ce sujet.

@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

Répondre

Retourner vers « Utilisateurs avancés »