Настройка XDMCP, удаленного подключения к рабочему столу Linux

Не так давно я затрагивал вопрос настройки X11 Forwarding [Копия], что позволяет через ssh запускать отдельные графические приложения на удаленной Linux-машине (сервере). Теперь буду настраивать удаленный доступ к рабочему столу через XDMCP.
XDMCP внешне похож на RDP в Windows, т.е. при подключении пользователю будет предложено ввести логин и пароль в окне входа в систему и на экране отобразится удаленный рабочий стол. Фактически, на удаленной машине в памяти висит Display Manager (GDM, XDM и т.д.) и слушает 177 порт UDP, если от X-сервера с другой машины поступает запрос, Display Manager начинает с ним общаться, принимать оттуда изображение, а туда передавать координаты мыши и нажатия с клавиатуры, рисует окошко входа в систему. Если пользователь предоставил корректные данные для входа в систему, то он сможет работать с удаленным рабочим столом.

Внимание! Не все Display Manager’ы поддерживают работу по протоколу XDMCP. Точно поддерживают XDM, GDM, KDM и LightDM [3], так что проверьте в первую очередь, какой у вас Display Manager, и может ли он работать по XDMCP. Например, на одной из машин, к которой требовался доступ по XDMCP пришлось вместо LXDM ставить GDM.
Внимание! Протокол XDMCP довольно слабо защищен, так что его не рекомендуется использовать через Интернет без дополнительного шифрования. У нас, например, сделан доступ через VPN.

Настройка файервола

Первым делом необходимо открыть на файерволе нужные порты. Обязательно для входящих соединений открывается порт UDP 177. Если соединение планируется из Windows, то необходимо также открыть порты TCP 6000-6005 в обоих направлениях (входящие и исходящие соединения). Для соединения из Gnome вроде как надо открыть также в обоих направлениях порты TCP 16001 и 35091 [2]. На практике я проверял только подключение из Windows.
Команды для настройки файервола:

# XDMCP
echo "Open 177 port UDP (XDMCP) for Avallon AG clients..."
iptables -A INPUT -s x.x.x.x/yy -p udp --dport 177 -j ACCEPT
iptables -A OUTPUT -s x.x.x.x/yy -p udp --sport 177 -j ACCEPT

echo "Open 6000:6005 ports (Windows XDMCP) in both directions for AAG clients..."
iptables -A INPUT -s x.x.x.x/yy -p tcp -m multiport --dports 6000:6005 -j ACCEPT
iptables -A OUTPUT -s x.x.x.x/yy -p tcp -m multiport --sports 6000:6005 -j ACCEPT

iptables -A INPUT -s x.x.x.x/yy -p tcp -m multiport --sports 6000:6005 -j ACCEPT
iptables -A OUTPUT -s x.x.x.x/yy -p tcp -m multiport --dports 6000:6005 -j ACCEPT

Вместо x.x.x.x/yy надо подставить адрес компьютера с которого будем связываться с компьютером под Linux, или маску подсети.

Настройка Display Manager’а

У меня был GDM, поэтому приведу его как основной, остальные дам для справки.
Необходимо найти файл custom.conf, в источниках написано, что лежать он должен по адресу /etc/gdm/custom.conf, но на самом деле это зависит от дистрибьютива. В моем случае файл находился здесь: /etc/X11/gdm/custom.conf

В файле, который выглядит, как обычный INI-файл необходимо найти секцию [xdmcp] и вписать туда следующие параметры:

Enable=true
Port=177

Как видите, можно задать альтернативный порт для XDMCP.

Настройка других DM:

XDM:

/etc/X11/xdm/xdm-config

Редактируем файл конфигурации xdm-config.

Для разрешения удаленного подключения закомментировать строку:
! DisplayManager.requestPort 0

Разрешение подключения через Xdmcp.
Найти Xaccess в /etc/X11/xdm
Найдите строку
# * #any host can get a login window

Раскомментируйте строку, изменить его на
* #any host can get a login window

LIGHTDM:

Добавить в файл /etc/lightdm/lightdm.conf:

[XDMCPServer]
enabled=true
[1]

KDM:
Edit kdmrc (/opt/kde/share/config/kdm/kdmrc [KDE 3x] or /usr/share/config/kdm/kdmrc (KDE 4x] ) and at the end there should be something like this:

[Xdmcp]
Enable=true
[3]

Внимание! Стоит заметить, что в некоторых случаях конфигурационные файлы могут располагаться в других местах. Если их нет по указанным путям, можно воспользоваться поиском файлов в том же mc

Настройка подключения в Windows

Понадобится уже упомянутый в заметке про X11-Forwarding Xming.
Запускаем XLaunch и устанавливаем конфигурацию.

В первом окне выбираем один из режимов «одного окна», например One window, иначе не даст создать XDMCP сессию, и указываем номер дисплея 0 (обычно 0, если вы специально ничего не переопределяли на сервере, подробнее см. документацию по используемому Display Manager’у):


В следующем окне выбираем тип сессии XDMCP:


Далее указываем адрес сервера.


В окне Additional Parameters можно указать дополнительные параметры, например в данном случае я указал размер шрифта (-dpi 96) в окне Xming, потому что по умолчанию шрифт, выставленный Xming’ом очень мелкий и надписи в диалоговых окнах видно плохо.


В последнем окне мастера настройки можно сохранить конфигурацию в файл *.xlaunch, чтобы позже запускать мастер XLaunch с готовой конфигурацией.

Если все сделано правильно

То при запуске Xming (через мастер XLaunch или с нужными параметрами) мы увидим окно авторизации в системе:


По клику доступно полноразмерное изображение

Если авторизация удалась, то мы увидим рабочий стол удаленного компьютера.


По клику доступно полноразмерное изображение

Сохранение и использование настроек соединения

Чтобы каждый раз не вписывать и не выбирать вручную все параметры в мастере XLaunch, можно воспользоваться двумя способами:

1. Как ранее говорилось, сохранить конфигурацию в файл *.xlaunch (например xdmcp.xlaunch) и запускать мастер XLaunch, указывая ему с помощью ключа -load файл конфигурации. Мастер XLaunch запустится, но все поля в окнах будут уже предварительно заполнены. Это удобно, если нужно соединяться по XDMCP с несколькими серверами, различающимися только, например, IP-адресом. Можно создать ярлык, в свойствах которого указать параметры к запуску XLaunch:

"C:\Program Files\Xming\XLaunch.exe" -load xdmcp.xlaunch

2. Создать ярлык Xming с нужными параметрами:

"C:\Program Files\Xming\Xming.exe" :0 -clipboard -query 10.10.3.24 -dpi 96

Естественно, вместо 10.10.3.24 нужно подставить свой адрес удаленной машины с XDMCP, а число после -dpi выбрать под свои глаза и монитор.

Источники

1. Удаленный доступ по XDMCP (удаленное подключение к рабочему столу)
2.What Ports Need to be Opened for XDMCP
3.Xdmcp

Копия заметки в PDF

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*