среда, 27 февраля 2013 г.

X11vnc - аналог Radmin для linux.

Когда работаешь в техподдежрке в компании со штатом более ста человек, очень быстро отвыкаешь от индивидуального подхода (в прямом смысле 8)) к каждому пользователю. Основными рабочими инструментами становятся Radmin, vnc и службы удаленного рабочего стола windows.
Именно после такой работы я начал плотно заниматься переводом пользователей на linux, и первым делом встал вопрос о системах удаленного управления рабочим столом в этой операционной системе.
Я не буду рассказывать о том, каким тернистым путем я шел, ведя борьбу с различными программами на счет автозапуска, подключения к текущей сессии пользователя и тд и тп.
Расскажу только о конечном результате.
Сейчас я использую x11vnc. Основным дистрибутивом является openSUSE 12.1. Сначала устанавливаем сервер:

zypper in x11vnc

После установки можно настроить сервер из графической оболочки, но мне это сделать не удалось.


Поиски в гугле и чтение манов дали ответ:

x11vnc -display :0 -shared -forever -auth guess&

Так выглядит строка запуска сервера vnc для того, чтобы подключаться  к запущенному графическому серверу. Особо отмечу параметры запуска : -auth guess разрешает подключение без какой-либо аутентификации, то есть не требуется ни подтверждение пользователя, ни указание пароля, любой может получить полный доступ к сессии пользователя просто обратившись к компьютеру по IP адресу или имени используя vnc.
В моей компании подобная ситуация допустима и искать более подходящие параметры я не стал. Добавил команду в автозагрузку создав скрипт /etc/init.d/x11vnc

 #!/bin/bash
x11vnc -display :0 -shared -forever -auth guess&


сделал его исполняемым (chmod +x /etc/init.d/x11vnc) и добавив в запуск на 5 уровне исполнения (ln -s /etc/init.d/x11vnc /etc/init.d/rc5.d/S12x11vnc).
Все прекрасно работает, казалось бы можно просто работать, но...
В наличии имеется довольно много старых компьютеров, которые openSUSE с KDE просто не вывезут. На них я обычно устанавливаю XFCE, хотя в последнее время стал склоняться к использованию Xubuntu 12.04. С XFCE используется диспетчер lightwm.
Так вот, при выполнении указанной выше команды получаем следующую картину:

27/02/2013 17:38:53 x11vnc version: 0.9.12 lastmod: 2010-09-09  pid: 2149
xauth:  file /root/.Xauthority does not exist
/tmp/fd.0RDwcb: 305: [: -a: unexpected operator
/tmp/fd.0RDwcb: 305: [: -a: unexpected operator
27/02/2013 17:38:53 -auth guess: failed for display=':0'
27/02/2013 17:38:53 -auth guess: since we are root, retrying with FD_XDM=1
/tmp/fd.7U6gp4: 305: [: -a: unexpected operator
/tmp/fd.7U6gp4: 305: [: -a: unexpected operator
27/02/2013 17:38:54 -auth guess: failed for display=':0'


Вывод ошибок и Гугл многое говорят о возможности исправления ошибок, но я выбрал наиболее простой, как мне кажется, способ.

x11vnc -storepasswd /home/.vncpasswd
Enter VNC password:


Создаем файл с шифрованным паролем для доступа. Затем меняем наш скрипт /etc/init.d/x11vnc:

#!/bin/bash
x11vnc -dontdisconnect -display :0 -auth /var/run/lightdm/root/:0 -notruecolor -noxfixes -shared -forever -rfbport 5900 -bg -o /var/log/x11vnc.log -rfbauth /home/.vncpasswd


Дальше добавляем его в автозапуск как описано выше. Параметр -rfbauth /home/.vncpasswd указывает серверу x11vnc использовать созданный ранее файл с паролем. Указание запущенного экземпляра дисплейного менеджера -auth /var/run/lightdm/root/:0 необходимо, без него сервер x11vnc в XFCE просто не стартует. Остальные опции желательны, так как при работе без их указания наблюдаются многочисленные проблемы - не срабатывает запуск, сервер отваливается после отключения клиента, и др.
Все действия описаны для openSUSE, отличие от Xubuntu только в добавлении скрипта в автозагрузку. Там это делается командой update-rc.d x11vnc defaults 99 после создания файла x11vnc в директории /etc/init.d/.
После всех процедур получаем компьютер, к которому в любой момент можно подключиться по vnc и оказать помощь пользователю.



3 комментария:

  1. Недавно выявилось, что на некоторых машинах vnc не запускается при таких настройках. В логах стоит ругань на неправильный display. Немного погуглил и нашел более "правильный" технически способ запуска: http://www.fullautomatic.ru/index.php/debian-ubuntu-rhel-centos/204-76
    Суть его в создании файла /etc/init/x11vnc.conf
    Вот его содержимое:
    start on login-session-start
    script
    x11vnc -dontdisconnect -display :0 -auth /var/run/lightdm/root/:0 -notruecolor -noxfixes -shared -forever -rfbport 5900 -bg -o /var/log/x11vnc.log -rfbauth /home/.vncpasswd
    end script

    ОтветитьУдалить
  2. /usr/bin/x11vnc -dontdisconnect -display :0 -notruecolor -noxfixes -shared -forever -rfbport 5900 -bg -o /var/log/x11vnc.log -rfbauth ~/.vnc/passwd -env FD_XDM=1 -auth guess

    ОтветитьУдалить
    Ответы
    1. Несовсем понятно, зачем после указания -rfbauth ~/.vnc/passwd вы предлагаете еще опцию -auth guess?

      Удалить