Настройка сервера TightVNC на Debian 8 (с KDE)

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

Я провел много исследований и попыток исправить эту проблему, в основном изменяя файл xstartup. Я пробовал альтернативные клиенты VNC (UltraVNC и TightVNC) с компьютера на Windows 7, и результаты были одинаковыми для каждого клиента.

В основном, я получаю либо пустой серый экран с только стрелочным курсором, либо вообще не удается подключиться.

Я также попробовал другой VNC сервер (VNC4server), но оставил это, потому что, хотя я мог подключиться, каждый раз возникала ошибка в окне клиента. И Tightvnc, похоже, более широко используется и поддерживается пользователями.

Я обнаружил, что почти не имеет значения, что я помещаю в файл ~/.vnc/xstartup (например, даже если там всего одна строка (startkde &) это будет работать, если я укажу “root” в качестве пользователя VNC. Но тогда я вошел как root, а мне нужно, чтобы следовать стандартной практике *nix быть вошедшим как не-root пользователь. Таким образом, проблема, похоже, относится к привилегиям. Однако я проверяю правильное владение и исполняемые флаги на файлах после каждого редактирования.

Я где-то читал, что последняя версия Tightvnc сервера не позволит запустить рабочий стол KDE, если на хосте уже запущена сессия рабочего стола (пользователь вошел в систему), поэтому я запускаю хост-машину без входа кого-либо. Я настроил Tightvnc сервер как сервис.

Мой текущий файл xstartup выглядит следующим образом, но, как я уже сказал, я уже пробовал много вариантов этих строк, комментируя почти все, из предложений, собранных в Интернете.

#!/bin/sh

# Раскомментируйте следующие две строки для нормального рабочего стола:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc &
# unset DBUS_SESSION_BUS_ADDRESS

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80×24+10+10 -ls -title “$VNCDESKTOP Desktop” &
# x-window-manager &
exec startkde &

Вот файл сервиса, /lib/systemd/system/tightvncserver.service :

[Unit]
Description=TightVNC удаленный рабочий стол сервер
After=sshd.service

[Service]
Type=dbus
ExecStart=/usr/bin/vncserver -geometry 1024×768 -depth 24 :1
User=vnc
Type=forking

[Install]
WantedBy=multi-user.target

Вот лог после одного перезагрузки хоста и одной попытки подключения:

14/03/16 01:37:46 Xvnc версия TightVNC-1.3.9
14/03/16 01:37:46 Авторские права (C) 2000-2007 TightVNC Group
14/03/16 01:37:46 Авторские права (C) 1999 AT&T Laboratories Cambridge
14/03/16 01:37:46 Все права защищены.
14/03/16 01:37:46 См. http://www.tightvnc.com/ для информации о TightVNC
14/03/16 01:37:46 Имя рабочего стола ‘X’ (test:1)
14/03/16 01:37:46 Поддерживаемые версии протокола: 3.3, 3.7, 3.8, 3.7t, 3.8t
14/03/16 01:37:46 Прослушивание VNC соединений на TCP порту 5901
/home/vnc/.vnc/xstartup: 12: /home/vnc/.vnc/xstartup: vncconfig: не найден
x-terminal-emulator: Неизвестный параметр ‘ls’.
x-terminal-emulator: Используйте –help, чтобы получить список доступных параметров командной строки.
Ошибка: не удается создать директорию “/tmp/ksocket-vncw1nXNU”: Файл существует
startkde: Запуск…
kdeinit4: Прерывание. bind() не удалось: Адрес уже используется
Не удалось привязаться к сокету ‘/tmp/ksocket-vncGcyXe4/kdeinit4__1’

14/03/16 01:38:09 Получено соединение от клиента 192.168.10.10
14/03/16 01:38:09 Использование версии протокола 3.8
14/03/16 01:38:14 Аутентификация полного контроля прошла для 192.168.10.10
14/03/16 01:38:14 Пиксельный формат для клиента 192.168.10.10:
14/03/16 01:38:14 32 бита на пиксель, глубина 24, маленький конец
14/03/16 01:38:14 истинный цвет: макс r 255 g 255 b 255, сдвиг r 16 g 8 b 0
14/03/16 01:38:14 не требуется перевод
14/03/16 01:38:14 Использование кодирования hextile для клиента 192.168.10.10
14/03/16 01:38:14 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования 19
14/03/16 01:38:14 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования 18
14/03/16 01:38:14 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования 17
14/03/16 01:38:14 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования 16
14/03/16 01:38:14 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования 10
14/03/16 01:38:14 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования 9
14/03/16 01:38:14 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования 8
14/03/16 01:38:14 Использование уровня сжатия 6 для клиента 192.168.10.10
14/03/16 01:38:14 Включение обновлений цветного курсора для клиента 192.168.10.10
14/03/16 01:38:14 Включение обновлений положения курсора для клиента 192.168.10.10
14/03/16 01:38:14 Использование уровня качества изображения 6 для клиента 192.168.10.10
14/03/16 01:38:14 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования -65530
14/03/16 01:38:14 Включение расширения протокола LastRect для клиента 192.168.10.10
14/03/16 01:38:14 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования -223
14/03/16 01:38:14 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования -32768
14/03/16 01:38:14 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования -32767
14/03/16 01:38:14 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования -32764
14/03/16 01:38:14 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования -32766
14/03/16 01:38:14 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования -32765
14/03/16 01:38:14 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования -1063131698
14/03/16 01:38:43 Клиент 192.168.10.10 отключен
14/03/16 01:38:43 Статистика:
14/03/16 01:38:43 события клавиш получено 0, события указателя 260
14/03/16 01:38:43 обновления кадра 2, прямоугольники 5, байты 776789
14/03/16 01:38:43 обновления формы курсора 2, байты 4920
14/03/16 01:38:43 обновления положения курсора 1, байты 12
14/03/16 01:38:43 прямоугольники hextile 2, байты 771857
14/03/16 01:38:43 эквивалент сырых байтов 6291480, коэффициент сжатия 8.151095

Какие идеи?

[ИЗМЕНЕНИЕ, 2014/03/14, 1409 UTC]: Я забыл упомянуть, что у меня это работало без ошибок с рабочим столом XFCE. Но я предпочитаю KDE, и я хочу, чтобы это работало, если это вообще возможно.

[ИЗМЕНЕНИЕ, 2014/03/14, 2216 UTC]: Это продолжение предложения Пола Х., я помещаю это здесь, потому что мини-форматирование комментариев, похоже, не позволяет использовать блочные цитаты и изображения.

Спасибо, это продвинуло меня вперед. После того как я даю команду “startkde &”, окно клиента открывается с логичным рабочим столом, который начинает загружаться и доходит до этого момента, прежде чем закрыться (обратите внимание на сообщение об ошибке в верхнем левом углу):

Обратите внимание на сообщение об ошибке в верхнем левом углу

Лог выглядит следующим образом:

14/03/16 21:32:11 Имя рабочего стола ‘X’ (test:1)
14/03/16 21:32:11 Поддерживаемые версии протокола: 3.3, 3.7, 3.8, 3.7t, 3.8t
14/03/16 21:32:11 Прослушивание VNC соединений на TCP порту 5901
QDBusConnection: соединение D-Bus сессии создано до QCoreApplication. Приложение может функционировать неправильно.
QDBusConnection: соединение D-Bus сессии создано до QCoreApplication. Приложение может функционировать неправильно.

14/03/16 21:32:37 Получено соединение от клиента 192.168.10.10
14/03/16 21:32:37 Использование версии протокола 3.8
14/03/16 21:32:47 Аутентификация полного контроля прошла для 192.168.10.10
14/03/16 21:32:47 Пиксельный формат для клиента 192.168.10.10:
14/03/16 21:32:47 32 бита на пиксель, глубина 24, маленький конец
14/03/16 21:32:47 истинный цвет: макс r 255 g 255 b 255, сдвиг r 16 g 8 b 0
14/03/16 21:32:47 не требуется перевод
14/03/16 21:32:47 Использование кодирования hextile для клиента 192.168.10.10
14/03/16 21:32:47 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования 19
14/03/16 21:32:47 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования 18
14/03/16 21:32:47 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования 17
14/03/16 21:32:47 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования 16
14/03/16 21:32:47 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования 10
14/03/16 21:32:47 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования 9
14/03/16 21:32:47 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования 8
14/03/16 21:32:47 Использование уровня сжатия 6 для клиента 192.168.10.10
14/03/16 21:32:47 Включение обновлений цветного курсора для клиента 192.168.10.10
14/03/16 21:32:47 Включение обновлений положения курсора для клиента 192.168.10.10
14/03/16 21:32:47 Использование уровня качества изображения 6 для клиента 192.168.10.10
14/03/16 21:32:47 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования -65530
14/03/16 21:32:47 Включение расширения протокола LastRect для клиента 192.168.10.10
14/03/16 21:32:47 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования -223
14/03/16 21:32:47 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования -32768
14/03/16 21:32:47 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования -32767
14/03/16 21:32:47 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования -32764
14/03/16 21:32:47 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования -32766
14/03/16 21:32:47 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования -32765
14/03/16 21:32:47 rfbProcessClientNormalMessage: игнорирование неизвестного кодирования -1063131698
Подключение к устаревшему сигналу QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
QDBusConnection: соединение D-Bus сессии создано до QCoreApplication. Приложение может функционировать неправильно.
QDBusConnection: соединение D-Bus сессии создано до QCoreApplication. Приложение может функционировать неправильно.
kbuildsycoca4 выполняется…
kbuildsycoca4(989) KBuildSycoca::checkTimestamps: проверка временных меток файлов
kbuildsycoca4(989) KBuildSycoca::checkTimestamps: проверка временных меток пройдена успешно
kbuildsycoca4(989) kdemain: Испускание notifyDatabaseChanged ()
QDBusConnection: соединение D-Bus сессии создано до QCoreApplication. Приложение может функционировать неправильно.
QDBusConnection: соединение D-Bus сессии создано до QCoreApplication. Приложение может функционировать неправильно.
Object::connect: Нет такого сигнала org::freedesktop::UPower::DeviceAdded(QString)
Object::connect: Нет такого сигнала org::freedesktop::UPower::DeviceRemoved(QString)
QDBusConnection: имя ‘org.freedesktop.UDisks2’ имел владельца ” но мы думали, что это ‘:1.11’
klauncher: Завершение по сигналу 15
knotify4: Фатальная ошибка ввода-вывода: клиент убит
kded4: Фатальная ошибка ввода-вывода: клиент убит
konsole: Фатальная ошибка ввода-вывода: клиент убит
konsole(902) Konsole::SessionManager::~SessionManager: Менеджер сессий Konsole уничтожен с активными сессиями

Первое сообщение об ошибке, заканчивающееся “приложение может функционировать неправильно”, должно быть неважным, согласно отчетам об ошибках, которые я видел. Остальное, не уверен…

KDE работает с tightvncserver на моей системе. Попробуйте этот xstartup:

#!/bin/sh
unset SESSION_MANAGER 
xrdb $HOME/.Xresources
xsetroot -solid grey
export XKL_XMODMAP_DISABLE=1
konsole &

Вы должны получить окно терминала, когда подключите через VNC. Затем попробуйте startkde & из терминала и посмотрите, запустится ли оно. Если нет, обратите внимание на сообщения об ошибках в терминале и действуйте оттуда. Если оно запускается, вы можете попробовать добавить startkde & в конец скрипта xstartup и попробовать снова.

Вот минимальный xstartup, который сработал для меня, используя vnc4server и xfce. Вы можете добавить konsole & как раньше и изменить xfce4-session & на startkde &. Я не пробовал это с KDE.

#!/bin/sh

unset SESSION_MANAGER
xsetroot -solid grey
vncconfig -iconic &
xfce4-session &

Замена sddm на xdm исправила проблему черного экрана, и теперь у меня все работает хорошо, обратитесь к этому:
https://forums.opensuse.org/showthread.php/532320-vncserver-blank-screen

Переключите ваш дисплейный менеджер на XDM, KDM (вам придется сначала установить это в Yast), или LightDM на машинах, к которым вы пытаетесь получить доступ.

Код:
su -
и введите пароль, затем:
Код:
update-alternatives --config default-displaymanager
выберите ваш дисплейный менеджер из списка.

SDDM еще не работает хорошо с VNC.

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

Конечно, начинаем разбираться с проблемой настройки TightVNC сервера на Debian 8 с графической средой KDE.

Введение

Настройка VNC-сервера на Linux может быть трудной задачей, особенно когда речь идет о специфических дистрибутивах или графических интерфейсах. Вы описали свою ситуацию, включая ошибки, которые возникают при попытке подключения, а также ошибки, которые фиксирует VNC-сервер в своих логах. Мы рассмотрим возможные причины возникновения проблемы и предложим решения.

Текущая проблема

Вы столкнулись с проблемами, такими как пустой серый экран и ошибки подключения. Вы также отметили, что использование пользователя root решает проблему, что указывает на потенциальные проблемы с правами доступа. Существуют ошибки, связанные с vncconfig и x-terminal-emulator, а также ошибки при запуске KDE.

Решения

Вот пошаговый план настройки вашего VNC-сервера, начиная с редактирования файла ~/.vnc/xstartup:

  1. Проверьте наличие необходимых компонентов. Убедитесь, что у вас установлены пакеты tightvncserver, kde, x11-xserver-utils, и другие необходимые зависимости.

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

    #!/bin/sh
    unset SESSION_MANAGER
    unset DBUS_SESSION_BUS_ADDRESS
    xrdb $HOME/.Xresources
    xsetroot -solid grey
    startkde &

    Обратите внимание на удаление неиспользуемых строк и добавление unset DBUS_SESSION_BUS_ADDRESS, что может помочь устранить возникновение ошибок, связанных с D-Bus.

  3. Убедитесь в правильных правах доступа.
    После редактирования файла проверьте, что файл ~/.vnc/xstartup является исполняемым. Выполните команду:

    chmod +x ~/.vnc/xstartup
  4. Запуск TightVNC сервера.
    Убедитесь, что вы запускаете сервер от имени не-root пользователя. Например, командой:

    vncserver :1 -geometry 1024x768 -depth 24
  5. Логи.
    Проверяйте логи VNC-сервера в файлах ~/.vnc/<HOSTNAME>:<DISPLAY>.log на наличие ошибок после каждого запуска, чтобы выявить причины проблем.

  6. Проблемы с дисплейным менеджером.
    Как Вы упомянули, проблемы могут быть связаны с дисплейным менеджером (например, SDDM). Если вы используете SDDM, рассмотрите возможность его замены на KDM или LightDM. Чтобы сделать это, выполните:

    sudo update-alternatives --config default-displaymanager

Дополнительные шаги

  • Проблемы с D-Bus. Если возникают сообщения об ошибках, связанных с QDBusConnection, попробуйте следующее:
    • Запускать все команды в сеансе KDE через dbus-launch.

Заключение

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

Понимание и устранение этих проблем может потребовать нескольких итераций, но следуя предложенным выше шагам, вы сможете добиться успеха в настройке TightVNC сервера на Debian 8 с KDE.

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

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