Cómo configurar la variable DISPLAY predeterminada en gdm para que funcione x11vnc (cambiado en CentOS 8 desde CentOS 7)

Cómo configurar la variable DISPLAY predeterminada en gdm para que funcione x11vnc (cambiado en CentOS 8 desde CentOS 7)

Problema: GDM/KDE utiliza de manera predeterminada DISPLAY :1 en lugar de DISPLAY :0 en CentOS 8, y quiero que use DISPLAY :0 como en CentOS 7. Esto está afectando a x11vnc y causando más dolores de cabeza a VNC en las máquinas. (Ahora no puedo acceder mediante VNC a la pantalla de inicio de sesión).

Versión antigua/de trabajo

  • CentOS 7
  • KDE SC Versión 4.14.8
  • GDM Versión 3.28.2

Al realizar ssh en una máquina antigua para ejecutar x11vnc, podemos ver que :0 es la PANTALLA

$ w -us
USER   TTY   FROM  IDLE   WHAT
user   :0    :0    ?xdm?  /bin/sh /usr/bin/startkde

Versión rota/nueva

  • CentOS corriente 8
  • Versión plasma de KDE: 5.18.4
  • GDM Versión 40.0

Al ingresar a una nueva máquina para ejecutar x11vnc, podemos ver que :1 es la PANTALLA

$ w -us
USER   TTY   FROM  IDLE   WHAT
user   :1    :1    ?xdm?  /usr/libexec/gdm-x-session --register-session --run-script /usr/bin/startplasma-x11
user   pts/0 :1   46:05  kded5

Entonces, ahora, para iniciar x11vnc en una sesión iniciada en CentOS 8, necesito ejecutar x11vnc -display :1, lo cual no es gran cosa, solo un poco molesto y afecta algunos scripts. El mayor problema es que ahora no puedo acceder mediante VNC a la pantalla de inicio de sesión. Usar variaciones de ssh -X x11vnc -display :1, ejecutar como root y más.

Ambos tienen exactamente la misma configuración ssh (reenvío X11 y demás).

Editar:

Errores al intentar acceder a VNC en la pantalla de inicio de sesión:

~> ssh user@centos8
$ echo $DISPLAY 

$ x11vnc # this works on CentOS 7 w/ and w/o X11 forwarding 
...
10/06/2021 16:28:55 *** XOpenDisplay failed. No -display or DISPLAY.
Invalid MIT-MAGIC-COOKIE-1 key10/06/2021 16:28:59 XOpenDisplay(":0") failed.
10/06/2021 16:28:59 Trying again with XAUTHLOCALHOSTNAME=localhost ...
Invalid MIT-MAGIC-COOKIE-1 key10/06/2021 16:28:59 XOpenDisplay(":0") failed.
10/06/2021 16:28:59 Trying again with unset XAUTHLOCALHOSTNAME ...
Invalid MIT-MAGIC-COOKIE-1 key10/06/2021 16:28:59 
...
10/06/2021 16:28:59 ***************************************
10/06/2021 16:28:59 *** XOpenDisplay failed (:0)
...

$ x11vnc -display :1
10/06/2021 16:30:16 *** XOpenDisplay failed (:1)
$ exit

~> ssh -X user@centos8
$ echo $DISPLAY
localhost:10.0
$ x11vnc
...
10/06/2021 16:24:16 WARNING: DISPLAY starts with localhost: 'localhost:10.0'
10/06/2021 16:24:16 WARNING: Is this an SSH X11 port forwarding?  You most
10/06/2021 16:24:16 WARNING: likely don't want x11vnc to use that DISPLAY.
10/06/2021 16:24:16 WARNING: You probably should supply something
10/06/2021 16:24:16 WARNING: like: -display :0  to access the physical
10/06/2021 16:24:16 WARNING: X display on the machine where x11vnc is running.
...
X11 MIT Shared Memory Attach failed:
  Is your DISPLAY=localhost:10.0 on a remote machine?
  Note:   DISPLAY=localhost:N suggests a SSH X11 redir to a remote machine.
  Suggestion, use: x11vnc -display :0 ... for local display :0

caught X11 error:
10/06/2021 16:24:17 deleted 53 tile_row polling images.
X Error of failed request:  BadRequest (invalid request code or no such operation)
  Major opcode of failed request:  130 (MIT-SHM)
  Minor opcode of failed request:  1 (X_ShmAttach)
  Serial number of failed request:  56
  Current serial number in output stream:  111

$ x11vnc -display :1 
...
10/06/2021 16:26:16 *** XOpenDisplay failed (:1)
...

Errores similares al ejecutarse como root

Respuesta1

Descargué de CentOS7 gdm-3.28.2-26.el7.x86_64.rpm y pulseaudio-gdm-hooks-10.0-6.el7_9.x86_64.rpm e instalé (bajé de categoría) estos dos paquetes en Rocky Linux 8 (8.4) usando: instalación dnf gdm-3.28.2-26.el7.x86_64.rpm pulseaudio-gdm-hooks-10.0-6.el7_9.x86_64.rpm

gdm en esta versión un poco anterior usa "DISPLAY :0" y puedo iniciar sesión en la pantalla de inicio de sesión usando x11vnc. No estoy seguro de qué dependencias tiene gdm y qué efectos secundarios pueden ocurrir. La actualización del sistema operativo reinstalará la versión gdm más reciente de Rocky Linux 8 que usa "DISPLAY :1".

Respuesta2

Tengo el mismo problema, realmente molesto. Mi solución de fuerza bruta fue simplemente envolver VNC dentro de un script, que prueba cada una de las pantallas :0 y :1. :0 es siempre la pantalla de inicio de sesión y :1 es siempre la sesión de gnome. Entonces, con esto, puedo ingresar VNC a la estación de trabajo e iniciar sesión. Luego, la sesión de VNC finaliza, tengo que reiniciarla y luego puedo ver mi escritorio. Cerrar sesión también mata a X, por lo que la sesión de VNC finaliza nuevamente.

Algo como,

(
while true; do
   for displayNum in {0..1} ; do
      if ! pgrep -f "x11vnc -repeat -display" > /dev/null; then

         currentUserId=$(pgrep -x gnome-shell |
                         xargs --no-run-if-empty ps -ho uid |
                         awk '{print $1}')

         x11vnc -repeat -display ":${displayNum}" -rfbport 5900 \
                -shared -auth /run/user/${currentUserId}/gdm/Xauthority \
                -forever
         sleep 0.5
      else
         sleep 10
      fi
   done
done
) &

información relacionada