Удалённый рабочий стол при помощи Xnest/Xephyr
Использование опции -display позволяет организовать удалённый запуск отдельных приложений, а как быть, если вам нужен весь рабочий стол целиком? При помощи X-серверов Xnest или Xephyr можно запустить удалённую X-сессию через XDMCP. Эти серверы работают подобно обычным оконным приложениям, однако могут удалённо подключаться к GDM для организации X-сессии. Xnest и Xephyr не являются частьюGNOME и обычно не устанавливаются по умолчанию. Поискав в репозитариях пакетов вашей системы, вы можете найти и установить соответствующие пакеты. Их имена, например, в Fedora выглядят примерно так: xorg-x11-server-Xephyr и xorg-x11-server-Xnest.
После установки серверы могут быть вручную запущены для того, чтобы подключиться к удалённой системе:
Xnest :10 -query <host-with-gdm-configured> -geometry 1024x768 Xephyr -query <host-with-gdm-configured> -screen 1024x768 :1
Познакомившись с обеими реализациями можно сделать вывод, что Xephyr (изображён на скриншоте выше) более современен, активно разрабатывается и, как следствие, более стабилен. К сожалению, есть один неприятный момент в работе с ним: после того, как вы завершите работу в X-сессии, вы снова не сможете подключиться к удалённому GDM. Такое, вероятно, происходит потому, что GDM по умолчанию сконфигурирован так, чтобы разрешать не более одного подключения. Думаю, это можно решить, покопавшись в конфигурации GDM. В процессе экспериментов я не придумал ничего лучше, нежели перезапускать GDM на удалённой системе.
XDMCP через GDM работает наподобие трубопровода для удалённых приложений, которые отображают свои окна в локальной системе. Фактически, на удалённой системе вообще не нужно выполнять вход в систему. Главное, чтобы был запущен GDM. Поскольку создаётся новая X-сессия, вы можете использовать разрешение экрана отличное от используемого на удалённой системе. Например, если на удалённой системе невозможно получить разрешение экрана более, чем 800*600, то при наличии такой возможности в локальной системе, вы можете без проблем это сделать при использовании Xephyr и XDMCP через GDM. Также, вы без проблем можете использовать различные окружения рабочего стола (GNOME, KDE,Xfce и еже с ними) на удалённой системе и при подключении к ней через XDMCP.
XDMCP: «за» и «против»
«За»:
- используются «родные» возможности X11;
- легко конфигурируется через GDM;
- без проблем работает через фаерволл;
- раздельные X-сессии.
«Против»:
- не поддержки звука/видео;
- небезопасно, пароли передаются в открытом виде;
- несовместим с не-Linux платформами.
Удалённый экран через SSH
Безусловно, наиболее простым методом удалённого отображения приложений является использование SSH. SSH — отличное средство безопасного подключения к удалённым компьютерам. Вместе с Linux поставляется открытая реализация SSH, называемаяOpenSSH. Как в серверной, так и клиентской частях OpenSSH присутствует возможность включения туннелирования X11. Чтобы воспользоваться этой возможностью, клиентOpenSSH должен быть запущен с опцией -X.
SSH работает по принципу «клиент-сервер». Сервером является удалённая система, а клиентом — локальная (такая схема, как раз, и укладывается в традиционное понимание многими термина «клиент-сервер», а в случае с X11 всё наоборот). Для того, чтобы разрешить форвардинг X11, удалённый сервер должен быть соответствующим образом сконфигурирован. Соответствующие настройки делаются в файле /etc/ssh/sshd_config:
... AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE AcceptEnv LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE AcceptEnv LC_MEASUREMENT LC_IDENTIFICATION LC_ALL LANGUAGE #AllowAgentForwarding yes #AllowTcpForwarding yes #GatewayPorts no X11Forwarding yes ...
Настройки туннелирования X11 могут быть также включены/запрещены для каждого пользователя отдельно:
... Match User bilbobaggins X11Forwarding no ...
Внося изменения в конфигурационный файл сервера OpenSSH, не забывайте перезапускать его для того, чтобы изменения ступили в силу:
sudo service sshd restart
На стороне клиента, в файле /etc/ssh/ssh_config необходимо включить опциюForward11Trusted. В Fedora эта опция включена по умолчанию, в то время как в некоторых других дистрибутивах вам придётся сделать это самостоятельно:
... ForwardX11Trusted yes ...
Имейте ввиду, что расположение файлов конфигурации OpenSSH в различных дистрибутивах могут быть разными. Подробности вы найдёте в документации к OpenSSH, установленному в вашей системе.
После того, как клиент и сервер настроены, пользователь может пользоваться прелестями туннелирования X11, подключившись к удалённой системе SSH-клиентом, вызванным с опцией -X. При использовании этой опции, SSH передаёт удалённым приложениям всю необходимую информацию об X-сервере, так что вам не нужно их запускать с опцией -display или устанавливать предварительно переменную окружения DISPLAY.
Использование перенеправления X11 через SSH не требует, чтобы в удалённой системе работал GDM или X-сервер. Это даёт возможность работать с удалёнными компьютерами, не имеющими ни запущенного X-сервера, ни монитора вообще. Также, отсутствие GDM и X-сервера уменьшает количество потребляемых ресурсов на удалённой системе.
Однако, имейте ввиду, что поскольку графические приложения нуждаются в библиотеках, поставляемых вместе с X-сервером, последний должен быть установлен в удалённой системе.
Форвардинг X11 через SSH: «за» и «против»
«За»:
- безопасно;
- просто настраивается;
- прост в использовании;
- работает при использовании перенаправления портов;
- не требует наличия запущенных GDM и X-сервера в удалённой системе;
- возможность запуска нескольких приложений в пределах одной сессии;
- работает в видео.
«Против»:
- очень медленный по сравнению с использованием GDM и VNC;
- не поддерживает звук;
- протокол X11 сам по себе является очень «жирным».
По мотивам LinuxJournal.Com