Централизованное графическое управление рабочими станциями Linux в рамках локальной сети

    Общий рейтинг статьи: 1 (проголосовало 1 )
    Опубликовано:  [просмотров 351]


    Данная статья является логическим продолжением следующих устаревших статей:

    Представленные выше заметки немного устарели и требуют обновления и как раз плотно встал вопрос о реализации полноценной системы удаленной поддержки в рамках локальной сети для рабочих станций Linux. Что бы не говорили "хэйтеры", но рабочие станции под управлением Linux занимают уже значительный процент и в некоторых корпоративных случаях количество рабочих станций Ubuntu (да, именно это самый популярный дистрибутив) превышает количество Windows рабочих станций.

    Удаленный доступ VNC

    Именно поэтому текущая заметка будет "предварительным" экспериментом по построению централизованной суппорт-среды для рабочих станций Linux. В дальнейшем полученные наработки мы оформим в виде инсталляционных пакетов для быстрого развертывания.

    Итак, приступим:

    Настройка удаленного доступа к графической консоли текущего пользователя

    Одноименная заметка представлена в заголовке, но там мы рассматривали дисплейный менеджер sddm и KDE в качестве окружения рабочего стола и сейчас мы адаптируем наработки для стандартных для Ubuntu менеджера авторизации и окружения рабочего стола.

    По умолчанию в Ubuntu используется окружение рабочего стола Unity и менеджер входа в систему основанный на LightDM. Следовательно нам потребуется изменить представленный в заметке модуль для запуска x11vnc к нашим текущим реалиям.

    Но первым делом установим и настроим x11vnc задав пароль для удаленного доступа:

    # aptitude install x11vnc
    # x11vnc -storepasswd /etc/x11vnc.passwd

    Пароль для авторизации службы технической поддержки мы будем хранить в файле /etc/x11vnc.passwd. В идеале хотелось бы интегрировать службу доступа с учетными записями PAM-авторизации или домена ActiveDirectory, тем более, что мы неплохо научились интегрировать Ubuntu Linux и AD-домен, но штатная реализация VNC не поддерживает использование имен пользователей в принципе и реализацию этого функционала мы отложим до лучших времен.

    Для создания VNC подключения к графической консоли запущенного LightDM используется следующая команда (она немного отличается от варианта с использованием дисплейного менеджера sddm):

    /usr/bin/x11vnc -display :0 -auth /var/run/lightdm/root/\:0 \
    -rfbauth /etc/x11vnc.passwd -o /var/log/x11.log

    После запуска x11vnc вы можете сразу подключиться к менеджеру входа в систему удаленно используя команду:

    $ vncviewer 172.16.0.150:5900

    Для авторизации используется пароль заданный нами при создании passwd-файла. После отключения (закрытия программы VNC-клиент) серверная часть так же будет остановлена. Такой режим используется для тестирования авторизации x11vnc графическим сервером Xorg. Обратите внимание, что используется токен авторизации и x11vnc не обязательно (а даже противопоказано) запускать от имени суперпользователя, для практической реализации лучше создать специального системного пользователя.

    В отличие от случая с sddm не происходит отключения при авторизации, но при отключении пользователя как уже было сказано выше все равно потребуется перезапуск x11vnc и для автоматизации этого процесса мы используем модифицированный SystemD инит скрипт который будет запускаться от имени специального системного пользователя.

    Скрипт размещается в каталоге /lib/systemd/system и называется x11vnc.service:

    [Unit]
    Description=Remote control service x11vnc
    After=graphical.target

    [Service]
    Restart=always
    RestartSec=5
    Type=simple
    ExecStart=-/usr/bin/x11vnc -display :0 -auth "/var/run/lightdm/root/:0" -rfbauth /etc/x11vnc.passwd -o /var/log/x11.log
    User=x11vnc
    Group=x11vnc

    [Install]
    WantedBy=graphical.target

    Наша служба запускается от имени системного пользователя x11vnc и его естественно потребуется создать и дополнительно требуется сменить владельца log-файла, для чего выполните следующие команды:

    # useradd x11vnc --system
    # chown -R x11vnc /var/log/x11.log 

    Активируем автозапуск сервиса при старте системы и произведем первый "ручной запуск":

    # systemctl enable x11vnc.service
    # systemctl start x11vnc.service

    Проверить статус сервиса можно командой:

    # systemctl status x11vnc.service

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

    Сборка UltraVNC из исходных кодов:

    Последнюю сборку RealVNC убрали из открытого доступа и предлагают свой продукт под названием VNCconnect. Нас такой подход в принципе не устраивает, так как мы как раз и хотели построить решение на базе открытых технологий и обязательно бесплатных, а это был единственный вменяемый клиент с поддержкой масштабирования, но OpenSouce-версию они закрыть не могли, а только перенесли в архив и OpenSource версия доступна теперь по адресу https://archive.realvnc.com/download/open/3.3.7/. На всякий случай мы скопировали исходные коды себе в открытый репозитарий на GitHub и старую версию всегода можно собрать вручную.

    Исходные коды OpenSouce версии RealVNC можно скачать по адресу: https://github.com/help-me-project/RealVNC-OpenSource-Version-3.3.7

    Сборка из исходных кодов проблем не вызывает, только надо установить несколько дополнительных пакетов заголовочных файлов:

    # aptitude install libxt-dev libxmu-headers libxaw7-dev
    # ./configure
    # ./make

    Операции make install не предусмотрено и полученные исполняемые файлы vncviewer-а придется скопировать вручную. На этом тему мы не закрываем и в ближайшее время к ней вернемся.


    Обсуждение статьи

    Ваш комментарий: