Не удается запустить RealVNC с LightDM

Вопрос или проблема

Насколько я могу судить, GDM3 несовместим с RealVNC, поэтому я его удалил и установил LightDM. Однако теперь я не могу подключиться к RealVNC.

Ранее я выполнял:

sudo -u localuser vncserver-virtual

… и это запускало VNC-сервер на порту 5901, к которому я мог подключиться. Я все еще могу, но теперь на экране появляется сообщение:

Xsession: невозможно начать X-сеанс --- нет файла .xsession, нет файла .Xsession, нет менеджеров сеансов, нет оконных менеджеров и нет терминальных эмуляторов; прерывание.

Я предполагаю, что мне нужно внести изменения в файл /etc/vnc/xstartup.custom, чтобы X каким-то образом обнаружил LightDM? Его текущее содержание кажется сосредоточенным вокруг GDM:

#!/bin/sh

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey

if [ -f /usr/bin/gnome-session ]; then
  # Некоторые типы сеансов gnome не будут работать с Xvnc, попробуйте выбрать разумный
  # по умолчанию.
  for SESSION in "ubuntu-2d" "2d-gnome" "gnome-classic" "gnome-fallback"; do
    if [ -f /usr/share/gnome-session/sessions/$SESSION.session ]; then
      DESKTOP_SESSION=$SESSION; export DESKTOP_SESSION
      GDMSESSION=$SESSION; export GDMSESSION
      STARTUP="/usr/bin/gnome-session --session=$SESSION"; export STARTUP
    fi
  done
fi

unset SESSIONBIN
XTERM_COMMAND="xterm -geometry 80x24+10+10 -ls"

if   [ -x /etc/X11/Xsession ]; then SESSIONBIN="/etc/X11/Xsession"
elif [ -x /etc/X11/xdm/Xsession ]; then SESSIONBIN="/etc/X11/xdm/Xsession"
elif [ -x /etc/X11/xinit/Xsession ]; then SESSIONBIN="/etc/X11/xinit/Xsession"
elif [ -x /etc/X11/gdm/Xsession ]; then SESSIONBIN="/etc/X11/gdm/Xsession gnome-session"
elif [ -x /etc/gdm/Xsession ]; then SESSIONBIN="/etc/gdm/Xsession gnome-session"
elif [ -x /etc/kde/kdm/Xsession ]; then SESSIONBIN="/etc/kde/kdm/Xsession"
elif [ -x /usr/dt/bin/Xsession ]; then
  XSTATION=1
  DTXSERVERLOCATION=local
  export XSTATION DTXSERVERLOCATION
  SESSIONBIN="/usr/dt/bin/Xsession"
elif [ -x /usr/dt/bin/dtsession ]; then SESSIONBIN="/usr/dt/bin/dtsession"
elif which twm > /dev/null 2>&1; then
  $XTERM_COMMAND &
  SESSIONBIN="twm"
fi

if [ "x${SESSIONBIN}" = "x" ]; then
  echo "Сессия не найдена; просто запускаем терминал"
  $XTERM_COMMAND
  echo "Терминал закрылся с кодом возврата $?"
else
  echo "Запуск сессии: $SESSIONBIN"
  $SESSIONBIN
  echo "Сессия завершилась с кодом возврата $?"
fi

vncserver-virtual -kill $DISPLAY

Есть идеи, что мне нужно изменить, чтобы подключить мою сессию RealVNC к LightDM?

Оказалось, что проблема заключалась в том, что я не установил окружение рабочего стола, и я запускал vncserver-??? в режиме пользователя. VNC-сервер пытался войти как пользователь, который его запустил, а не перейти на экран входа, и, очевидно, это не удавалось, так как не было окружения рабочего стола!

Так что вам нужно либо установить окружение рабочего стола, либо запустить VNC-сервер в сервисном режиме, чтобы получить экран входа.

По умолчанию Менеджеры рабочего стола конфигурируются так, чтобы не принимать подключения по сети. gdm, по-видимому, лишен этой возможности, поэтому я использовал xdm для VNC-соединений. Если LightDM все еще имеет возможность принимать подключения, вам нужно будет активировать ее.

Директории будут различаться, но шаги, которые я использую для xdm, таковы:

  • Отредактируйте /etc/X11/xdm/xdm-config, чтобы закомментировать строку DisplayManager.requestPort. По умолчанию xdm настроен так, чтобы не слушать IP-соединения.
  • Отредактируйте /etc/X11/xdm/Xaccess, чтобы раскомментировать строку, позволяющую любому хосту получить окно входа. Альтернативно, вы можете просто добавить строку localhost.
  • Возможно, вам захочется отредактировать /etc/X11/xdm/Xsetup, чтобы раскомментировать строку xsetroot. xsetroot также можно использовать для предоставления фонового изображения или других эффектов.

Эти шаги извлечены из моего блога о Удаленных рабочих столах с VNC и RDP.

Ответ или решение

Проблема с подключением к RealVNC при использовании LightDM может быть решена несколькими способами. Ниже приведены шаги и советы, которые помогут вам настроить VNC-сервер и обеспечить корректную работу с LightDM.

1. Установка рабочего окружения

Главная причина, по которой вы не можете подключиться к VNC, заключается в том, что у вас отсутствует установленное рабочее окружение. Убедитесь, что вы установили одно из рабочих окружений, например, XFCE или LXDE. Это можно сделать с помощью следующей команды:

sudo apt install xfce4 xfce4-goodies

2. Настройка xstartup

После установки рабочего окружения вам нужно изменить файл ~/.vnc/xstartup, чтобы он запускал нужное окружение при старте VNC. Откройте файл в текстовом редакторе и замените его содержимое на следующее:

#!/bin/sh

# Запуск рабочего окружения XFCE
startxfce4 &

Не забудьте дать файлу xstartup права на выполнение:

chmod +x ~/.vnc/xstartup

3. Настройка LightDM для доступа VNC

LightDM может быть настроен для поддержки VNC-подключений. Если вы хотите использовать LightDM в качестве диспетчера, выполните следующие шаги:

  1. Откройте файл конфигурации LightDM:
sudo nano /etc/lightdm/lightdm.conf
  1. Убедитесь, что в нем есть следующая секция для VNC-подключений:
[Seat:*]
greeter-session=lightdm-gtk-greeter
session-wrapper=/etc/X11/Xsession
  1. Если нужно, добавьте разрешение на подключения:
[LightDM]
allow-guest=false

4. Конфигурация xdm (если используется)

Если вы использовали xdm, выполните следующие действия:

  1. Откройте файл конфигурации:
sudo nano /etc/X11/xdm/xdm-config
  1. Закомментируйте строку, начинающуюся с DisplayManager.requestPort (она должна выглядеть так: # DisplayManager.requestPort). Это позволит xdm слушать подключения по сети.

  2. Измените файл /etc/X11/xdm/Xaccess:

Удалите комментарий (или добавьте) для строки, разрешающей вход на localhost:

*        #any host can get a login window
localhost   # localhost can always get a login window
  1. При необходимости откройте /etc/X11/xdm/Xsetup и раскомментируйте строку, содержащую xsetroot, чтобы установить фон.

5. Запуск VNC-сервера

Теперь, когда все настроено, вы можете запустить VNC-сервер следующим образом:

vncserver :1

6. Подключение к VNC

Попробуйте подключиться к VNC-клиенту, используя адрес вашего сервера и порт, например, 192.168.1.100:5901.

Заключение

Если вы все сделали правильно, вы должны иметь возможность подключиться к вашему рабочему столу через RealVNC. Убедитесь, что firewall не блокирует соединения на порте 5901 и что все необходимые службы работают. Если проблемы продолжаются, проверьте логи VNC (~/.vnc/*.log) для получения дополнительной информации о возможных ошибках.

Оцените материал
Добавить комментарий

Капча загружается...