Вопрос или проблема
Я провел много исследований и попыток исправить эту проблему, в основном изменяя файл 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/.Xresourcesxsetroot -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
:
-
Проверьте наличие необходимых компонентов. Убедитесь, что у вас установлены пакеты
tightvncserver
,kde
,x11-xserver-utils
, и другие необходимые зависимости. -
Редактирование файла 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. -
Убедитесь в правильных правах доступа.
После редактирования файла проверьте, что файл~/.vnc/xstartup
является исполняемым. Выполните команду:chmod +x ~/.vnc/xstartup
-
Запуск TightVNC сервера.
Убедитесь, что вы запускаете сервер от имени не-root пользователя. Например, командой:vncserver :1 -geometry 1024x768 -depth 24
-
Логи.
Проверяйте логи VNC-сервера в файлах~/.vnc/<HOSTNAME>:<DISPLAY>.log
на наличие ошибок после каждого запуска, чтобы выявить причины проблем. -
Проблемы с дисплейным менеджером.
Как Вы упомянули, проблемы могут быть связаны с дисплейным менеджером (например, SDDM). Если вы используете SDDM, рассмотрите возможность его замены на KDM или LightDM. Чтобы сделать это, выполните:sudo update-alternatives --config default-displaymanager
Дополнительные шаги
- Проблемы с D-Bus. Если возникают сообщения об ошибках, связанных с QDBusConnection, попробуйте следующее:
- Запускать все команды в сеансе KDE через
dbus-launch
.
- Запускать все команды в сеансе KDE через
Заключение
Если после выполнения всех этих шагов проблема не исчезает, возможно, стоит временно использовать другой графический интерфейс, такой как XFCE, для подтверждения, что проблема именно в KDE. Если VNC с XFCE работает, то это даст уверенность, что проблема заключается именно в конфигурации KDE, и не затрагивает общую настройку VNC. Если KDE работает, но с ошибками, необходимо более детально проанализировать логи на наличие конкретных сообщений об ошибках.
Понимание и устранение этих проблем может потребовать нескольких итераций, но следуя предложенным выше шагам, вы сможете добиться успеха в настройке TightVNC сервера на Debian 8 с KDE.