Вопрос или проблема
Насколько я могу судить, 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 в качестве диспетчера, выполните следующие шаги:
- Откройте файл конфигурации LightDM:
sudo nano /etc/lightdm/lightdm.conf
- Убедитесь, что в нем есть следующая секция для VNC-подключений:
[Seat:*]
greeter-session=lightdm-gtk-greeter
session-wrapper=/etc/X11/Xsession
- Если нужно, добавьте разрешение на подключения:
[LightDM]
allow-guest=false
4. Конфигурация xdm (если используется)
Если вы использовали xdm
, выполните следующие действия:
- Откройте файл конфигурации:
sudo nano /etc/X11/xdm/xdm-config
-
Закомментируйте строку, начинающуюся с
DisplayManager.requestPort
(она должна выглядеть так:# DisplayManager.requestPort
). Это позволитxdm
слушать подключения по сети. -
Измените файл
/etc/X11/xdm/Xaccess
:
Удалите комментарий (или добавьте) для строки, разрешающей вход на localhost:
* #any host can get a login window
localhost # localhost can always get a login window
- При необходимости откройте
/etc/X11/xdm/Xsetup
и раскомментируйте строку, содержащуюxsetroot
, чтобы установить фон.
5. Запуск VNC-сервера
Теперь, когда все настроено, вы можете запустить VNC-сервер следующим образом:
vncserver :1
6. Подключение к VNC
Попробуйте подключиться к VNC-клиенту, используя адрес вашего сервера и порт, например, 192.168.1.100:5901
.
Заключение
Если вы все сделали правильно, вы должны иметь возможность подключиться к вашему рабочему столу через RealVNC. Убедитесь, что firewall не блокирует соединения на порте 5901 и что все необходимые службы работают. Если проблемы продолжаются, проверьте логи VNC (~/.vnc/*.log
) для получения дополнительной информации о возможных ошибках.