Подключаемся к удалённому рабочему столу по VNC на этапе экрана авторизации (GDM, KDM, Lightdm, MDM)

Довольно часто бывает нужен доступ к графической среде удалённого окружения, и не всегда это удобно делать через SSH X Forwarding, и тут часто бывают удобны удалённые рабочие столы такие как RDP или VNC.
В данном посте, я расскажу как настроить VNC сервер с использованием x11vnc и возможностью подключаться на этапе экрана логина.

Всё что нам нужно - это запустить x11vnc во время загрузки передав с аргументом -auth MIT-MAGIC-COOKIE нашего дисплей менеджера.
MIT-MAGIC-COOKIE - это своеобразная авторизация используемая X сервером.

Установим x11vnc:

sudo apt-get install x11vnc

Создадим файл с паролем для авторизации:

sudo x11vnc -storepasswd /etc/x11vnc.pass

В основном vnc сервера используют 5900 порт. Мы будем использовать именного его. Необходимо, чтобы были разрешены подключения к нему в iptables:

iptables -A INPUT -p tcp -m tcp --dport 5900 -j ACCEPT

Запустим x11vnc:

sudo x11vnc -display :0 -rfbauth /etc/x11vnc.pass -rfbport 5900 -o /var/log/x11vnc.log

И проверим:

vncviewer localhost

Если всё хорошо, то мы увидим много копий нашего рабочего стола, которые очень быстро плодятся. :)
И последний штрих - запуск вместе с системой. По непонятным мне причинам, x11vnc с опцией -auth guess не находит MIT-MAGIC-COOKIE (хотя судя по документации должен), поэтому в скрипте небольшой костыль которым мы находим её сами.
На домашнем ПК у меня последняя ubuntu в которой используется upstart. Для автоматического запуска во время старта системы, и удобного управления нашим VNC сервером создадим задание для upstart.
Cоздадим файл /etc/init/x11vnc.conf со следующим содержимым:

# x11vnc
# Script for automatically run x11vnc as server

description "x11vnc server"

start on login-session-start
stop on runlevel [!2345]

respawn
respawn limit 10 5
umask 022

script

authfile=`ps wwaux | grep -v grep |
            grep '/X .*-auth' |
            sed -e 's/^.*-auth *//' -e 's/ .*$//' |
            head -n 1`

/usr/bin/x11vnc -xkb -noxrecord
       -display :0
       -auth $authfile
       -noxfixes
       -noxdamage
       -ncache 10
       -rfbauth /etc/x11vnc.pass
       -forever
       -rfbport 5900
       -o /var/log/x11vnc.log
end script

Запустить сервер можно как обычный сервис: service x11vnc start. При загрузке он будет так же автоматически запускаться.


Понравилась статья? Поделись с друзьями!




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