Проблема: GDM/KDE по умолчанию использует DISPLAY :1 вместо DISPLAY :0 в CentOS 8, а я хочу, чтобы использовался DISPLAY :0, как в CentOS 7. Это влияет на x11vnc и вызывает еще больше проблем с VNC-подключением к машинам (теперь я вообще не могу подключиться к экрану входа в систему через VNC).
Старая/рабочая версия
- CentOS7
- KDE SC Версия 4.14.8
- GDM-версия 3.28.2
При подключении по ssh к старой машине для запуска x11vnc мы видим, что :0 — это DISPLAY
$ w -us
USER TTY FROM IDLE WHAT
user :0 :0 ?xdm? /bin/sh /usr/bin/startkde
Сломанная/Новая версия
- CentOS Поток 8
- Версия KDE Plasma: 5.18.4
- GDM-версия 40.0
При подключении по ssh к новой машине для запуска x11vnc мы видим, что :1 — это DISPLAY
$ 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
Итак, теперь для запуска x11vnc в сеансе входа в CentOS 8 мне нужно запустить x11vnc -display :1
, что не так уж и важно, просто немного раздражает и влияет на некоторые скрипты. Более серьезная проблема в том, что теперь я не могу войти в экран входа через VNC. Использование вариаций off ssh -X
x11vnc -display :1
, запуск от имени root и многое другое.
У обоих устройств абсолютно одинаковая конфигурация SSH (переадресация X11 и прочее).
Редактировать:
Ошибки при попытке входа через VNC на экран входа:
~> 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)
...
Похожие ошибки при запуске от имени root
решение1
Я скачал из CentOS7 gdm-3.28.2-26.el7.x86_64.rpm и pulseaudio-gdm-hooks-10.0-6.el7_9.x86_64.rpm и установил (понижил) эти два пакета на Rocky Linux 8 (8.4) с помощью: dnf install gdm-3.28.2-26.el7.x86_64.rpm pulseaudio-gdm-hooks-10.0-6.el7_9.x86_64.rpm
gdm в этой немного более старой версии использует "DISPLAY :0", и я могу войти в экран входа с помощью x11vnc. Не уверен, какие зависимости есть у gdm и какие побочные эффекты могут возникнуть. Обновление ОС переустановит более новую версию gdm Rocky Linux 8, которая использует "DISPLAY :1".
решение2
У меня та же проблема, очень раздражает. Мое решение методом грубой силы было просто обернуть VNC в скрипт, который пытается отображать каждое из :0 и :1. :0 всегда является экраном входа, а :1 всегда является сеансом gnome. Таким образом, с помощью этого я могу подключиться к рабочей станции по VNC, войти в систему. Затем сеанс VNC завершается, мне приходится его перезапускать, затем я вижу свой рабочий стол. Выход из системы также убивает X, поэтому сеанс VNC снова завершается.
Что-то вроде,
(
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
) &