пятница, 22 мая 2015 г.

Подключение к графической подсистеме Linux Ubuntu по локальной сети


  Для удаленного подключения к графической подсистеме Linux из Windows используются два основных способа:

- перенаправление графического ввода-вывода из среды Linux на графический сервер , работающий на стороне Windows ( X11 Forwarding )

- подключение с использованием X Display Manager Control Protocol (XDMCP) - протокола, обеспечивающего удаленное подключение графических терминалов (X-терминалов) к графическому серверу (X-серверу).

Первый способ проще реализуется и позволяет получить приемлемое быстродействие графических приложений на системах с малой производительностью. Менеджер дисплея и TCP-соединения X-сервера на стороне Linux в данном случае не используются. Второй – позволяет получить полноценное удаленное рабочее место пользователя, функционально ничем не отличающееся от обычного, локального. При реализации данного вида удаленного подключения используются дополнительные настройки конфигурации для X-сервера и менеджера дисплея.


Подключение из Windows к графической подсистеме Linux на примере Ubuntu Desktop .



   В данной же статье рассматриваются вопросы, связанные с особенностями настройки X-сервера Ubuntu и менеджера дисплея LightDM. На стороне Windows используется бесплатный пакет Xming, последнюю версию которого, а также дополнительные пакеты с поддержкой различных шрифтов, и локализованную версию мастера Xlaunch найдете здесь:

Страница загрузки Xming на сайте проекта sourceforge.net

Страница новостей разработчика.



Удаленная работа с использованием X11 Forwarding.



    Перенаправление графического вывода удаленной подсистемы (X11 Forwarding) позволяет работать напрямую с графическими приложениями среды Linux на компьютере с графическим сервером Xming на стороне Windows. Данный режим реализуется с помощью SSH-подключения, в котором ssh-сервер sshd на стороне Linux перехватывает графический ввод-вывод и перенаправляет его ssh-клиенту ( PuTTY ) на стороне Windows, который в свою очередь , перенаправляет его графическому серверу Xming, развернутому в среде Windows. Таким образом, для реализации данного режима не требуется настройка X-сервера и менеджера дисплея для работы по сети, но требуется установка и настройка демона ssh на стороне Linux. В стандартном варианте установки Ubuntu Desktop 13.04 сервер SSH не устанавливается, поэтому его нужно установить командой :

sudo apt-get install ssh

В процессе выполнения команды будет выдано сообщение об устанавливаемых пакетах и объеме занимаемого ими пространства на жестком диске:

…
  ncurses-term openssh-server python-requests python-urllib3 ssh-import-id, 
  rssh molly-guard monkeysphere openssh-blacklist openssh-blacklist-extra ) 
НОВЫЕ пакеты, которые будут установлены:
  ncurses-term openssh-server python-requests python-urllib3 ssh ssh-import-id
обновлено 0, установлено 6 новых пакетов, для удаления отмечено 0 пакетов, и 
273 пакетов не обновлено.
Необходимо скачать 848 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 3 480 kB.
Хотите продолжить [Д/н]? 
После ответа Д будет установлен и запущен сервер SSH 

Для проверки работоспособности ssh-сервера можно воспользоваться командой:

netstat -na | more

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 192.168.0.133:39653     192.168.0.33:50021      ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN     
. . . 


Строка
  tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
Означает, что сервер ожидает входящие соединения ( “слушает”, LISTEN ) стандартный порт 22 на всех сетевых интерфейсах (0 0.0.0.0:22 ) 

    Для режима перенаправления графического вывода X11 forwarding в настройках демона sshd необходимо включить ( проверить ) некоторые параметры. Все действия требуют права root.

Переходим в каталог /etc/ssh и открываем конфигурационный файл демона SSH sshd_config. Для работы через X11 Forwarding в нем должна присутствовать незакомментированная строка 

X11Forwarding yes
    Естественно, в данном режиме, работа с удаленной графической подсистемой Linux, выполняется напрямую с графическими приложениями, без использования рабочего стола Ubuntu. Если количество нужных для работы приложений невелико, то такой способ предпочтительнее, поскольку позволяет снизить степень использования ресурсов удаленной системы и позволяет получить более высокое быстродействие, по сравнению с технологией, основанной на использовании XDMCP.     Таким образом, при перенаправлении графического вывода, (X11 forwarding)программа Xming, используется в качестве X-сервера, работающего поверх вашего рабочего стола Windows, с запускаемыми на удаленной системе с ОС Linux графическими приложениями. 

Кроме Xming, в данной технологии используются клиент и сервер SSH. Клиентская часть - на компьютере с ОС Windows, сервер - на компьютере с Linux. Разработчики Xming с некоторых пор, включили клиентское программное обеспечение для реализации режима X11 Forwarding в состав инсталляционных пакетов (Standart PuTTY и Portable PuTTY). 

Выбор варианта инсталляции Xming


При установке пакета Xming имеется возможность выбрать устанавливаемые версии PuTTY 

Кроме того, свежую версию бесплатного SSH - клиента для Windows, можно скачать на странице загрузки PuTTY 

Инсталляция не требуется. Просто скопируйте исполняемый файл putty.exe в каталог с установленным Xming, или любой другой, по вашему выбору.

  • Настройка Putty.

  •     Для работы с Xming в режиме перенаправления графического вывода достаточно подправить секцию SSH:

    PuTTY для X11 forwarding


    Данные настройки означают, что разрешено X11 Forwarding и для него будет использоваться графический дисплей (X-дисплей) с номером 0. Использовать 0-й номер дисплея не обязательно, но важно, чтобы этот номер совпадал с номером дисплея, указанном при запуске Xming ( поле Display number ):

    Xming - X11 forwarding


    При запуске Xming, с помощью мастера Xlaunch, задается номер дисплея (при необходимости) и выбирается многооконный режим Multiple windows, остальные параметры можно оставить по умолчанию. Фактически, номер дисплея определяет номер порта графического сервера на стороне Windows 

    – 0 соответствует порту 6000/TCP 

    - 1 – 6001/TCP

    . . . 

    Как уже рассматривалось выше, настройки X11 Forwarding в секции SSH/X11 PuTTY, также определяют X-сервер, на который будет перенаправляться графический ввод-вывод: 

    localhost:0 - X-сервер, слушающий порт 6000/TCP

    localhost:1 - X-сервер, слушающий порт 6001/TCP

    . . . 

    Соответственно, если на одном и том же компьютере запускается несколько X-серверов Xming, то номера графических дисплеев для них должны быть разными и соответствовать номерам, задаваемым в настройках клиента SSH. Для проверки подключенных графических подсистем можно воспользоваться командой отправки сообщения графическому дисплею 

    xmessage $DISPLAY - отобразить значение переменной DISPLAY

    В результате выполнения команды получим:

    xmessage – вывод значения переменной DISPLAY


    Данное сообщение отображается на том графическом дисплее, которому соответствует перенаправление графического вывода SSH-клиента, в окне которого выполнялась команда xmessage 

    После того, как Xming стартовал, с помощью ssh-клиента PuTTY подключаемся к ssh-серверу Linux Ubuntu, и в командной строке запускаем нужное графическое приложение, Например, если запустить графический терминал xterm, то на компьютере с Windows появляется окно графического терминала Linux.

    Xterm на компьютере с Windows через   X11 forwarding


    При запуске из сессии SSH-клиента PuTTY, или из окна уже запущенного терминала xterm , какого-либо графического приложения, например, обозревателя firefox на рабочем столе Windows отобразится его окно, в котором можно работать точно так же, как и на локальном компьютере с Linux Ubuntu.


    Удаленное подключение к графической подсистеме из Linux .



    Настройки демона sshd для удаленного доступа к графической подсистеме Linux выполняются точно так же, как и в случае перенаправления для X-сервера на стороне Windows. Графический вывод удаленной системы, в данной конфигурации, будет перенаправляться демоном sshd и разворачиваться графическим сервером на стороне подключившегося клиента.

    Для удаленного подключения к графической подсистеме с использованием перенаправления X11 Forwarding клиентов Linux-систем, можно воспользоваться стандартным SSH-клиентом:

    ssh -X -l user 192.168.0.1 

    -X - использовать перенаправление графического вывода X11Forwarding.

    -l user - имя пользователя для подключения к удаленному компьютеру.

    192.168.0.1 - адрес удаленного компьютера

    После регистрации в удаленной системе, пользователь user имеет возможность работать с графическими приложениями на удаленном компьютере 192.168.0.1

    Для запуска конкретного приложения на удаленной системе, можно указать его имя:

    ssh -X -l user 192.168.0.1 ‘xterm’ 

    После авторизации, на локальном дисплее отобразится окно терминала xterm удаленного компьютера под управлением Linux.

    По соображениям безопасности, вместо параметра ssh -X желательно использовать параметр -Y, предотвращающий возможность взаимодействия удаленного клиента с локальным графическим дисплеем системы, к которой выполняется подключение. 

    Подключение к рабочему столу Linux Ubuntu с использованием XDMCP.



        Менеджер дисплея ( Display Manager или DM) - это специальная системная служба обеспечивающая запуск графического сервера, вывод на графический дисплей приглашения на вход в систему, регистрацию пользователей, запуск оконных менеджеров, монтирование необходимых устройств, ведение баз данных входов и выходов пользователей в системе utmp и wtmp и т.п.

    А если упрощенно - то менеджер дисплея - это программа, с которой начинается сеанс работы пользователя в графическом окружением Linux. Визуально, менеджер дисплея представляет собой окно регистрации пользователя при входе в систему. Обычно под этим подразумевается форма для ввода логина и пароля, меню для выбора графической среды, и дополнительные элементы управления питанием (для выключения компьютера, перезагрузки, перевода в спящий режим), выбора языка ввода, и т.п. 

    В настоящий момент в графической подсистеме Linux (обозначаемой как X Window System или как X11) наиболее распространенными менеджерами дисплеев являются X Display Manager (xdm)Gnome Display Manager (gdm) и KDE Display Manager (kdm) и с 2012 года -Light Display Manager ( LghtDM ) . Разработка последнего начата в 2010 г. сотрудником компании Canonical Робертом Энцеллом (Robert Ancell) и в настоящее время LiightDM является вполне достойной альтернативой менеджерам дисплея предыдущего поколения. Главными его особенностями являются небольшой размер, высокое быстродействие, возможность работы с любой графической оболочкой и расширение функциональных возможностей с помощью плагинов. В перспективе, проект LightDM задается довольно амбициозной, но все же, реальной целью - стать стандартом для Х-сервера Linux X.org - сервера X Window System с открытым исходным кодом. С 2012 года, LightDM стал использоваться в качестве менеджера дисплеев по умолчанию во всех дистрибутивах Lunux Ubuntu. 

    Особенности настроек безопасности в Linux Ubuntu Desktop последних версий не предусматривают возможности удаленного подключения к графической среде по локальной сети – сервер X11 не слушает порт 6000/TCP и менеджер LightDM не слушает порт 177/UDP. Поэтому, в первую очередь нужно выполнить соответствующие настройки, обеспечивающие возможность сетевого подключения по протоколу XDMCP.

    Все файлы конфигурации менеджера дисплея LightDM размещаются в системном каталоге /etc/lightdm. Основные настройки - это lightdm.conf, который после инсталляции имеет следующее содержание: 

    [SeatDefaults]
    user-session=ubuntu
    greeter-session=unity-greeter
    
    Для разрешения TCP-подключений к графическому серверу X11, нужно в файл конфигурации lightdm.conf добавить строку :

    xserver-allow-tcp=true
    Для разрешения удаленных подключений к менеджеру дисплея нужно добавить секцию 


    [XDMCPServer]
    enabled=true
    


    Внесенные изменения вступят в силу только после перезапуска менеджера дисплея или перезагрузки системы. Для перезапуска LightDMможно воспользоваться командой:

    service lightdm restart 

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

    После перезапуска графической подсистемы или перезагрузки Ubuntu, можно проверить, слушаются ли порты 6000/TCP и 177/UDP:

    netstat –na | more 

    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    tcp        0      0 0.0.0.0:6000            0.0.0.0:*               LISTEN     
    tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN     
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
    tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
    tcp        0      0 192.168.0.133:52588     192.168.0.33:50021      ESTABLISHED
    tcp6       0      0 :::6000                 :::*                    LISTEN     
    tcp6       0      0 :::22                   :::*                    LISTEN     
    udp        0      0 0.0.0.0:177             0.0.0.0:*                          
    udp        0      0 0.0.0.0:34524           0.0.0.0:*                          
    udp        0      0 0.0.0.0:5353            0.0.0.0:*                          
    udp        0      0 127.0.1.1:53            0.0.0.0:*                          
    udp6       0      0 :::177                  :::*                               
    udp6       0      0 :::5353                 :::*                               
    udp6       0      0 :::41728                :::*                               
    . . . 
    
    В результате, видим, что менеджер дисплея ( LightDM ) настроен на использование протокола XDMCP и принимает входящие подключения на UDP порт 177 (по умолчанию) , а графический сервер (сервер X11 ) – принимает входящие подключения на порт 6000/TCP. 

        Если какой-либо из портов не слушается или закрыт брандмауэром, то удаленное подключение с использованием протокола XDMCP невозможно. Кроме того, на компьютерах с несколькими сетевыми интерфейсами возможны проблемы с удаленным подключением, вызванные нестыковкой IP-адресов и имен узлов. Поэтому, в файлах /etc/hosts ( Ubuntu ) и \windows\system32\drivers\etc\hosts ( Windows ) нужно прописать соответствие имен и IP-адресов компьютеров для того сетевого интерфейса, через который будет выполняться подключение ( например, только для подсети 192.168.0.0/24). В Ubuntu 13.04, после установки системы, например на компьютер с именем Ubuntu13, в файле /etc/hosts присутствуют записи :

    127.0.0.1 localhost

    127.0.0.1 Ubuntu13 

    Как видно, имени Ubuntu13 сопоставлен адрес петлевого интерфейса, и следовательно, реальный обмен данными по протоколу IP с использованием имени узла, невозможен. Чтобы устранить данную проблему, нужно последнюю строку заменить на IP-адрес в локальной сети и имя ( в примере Ubuntu13 ) – например 

    192.168.0.133 Ubuntu13 

    Аналогично, в системе с Windows, в файле hosts нужно оставить ( добавить) только те записи, которые задают однозначное соответствие имен и IP-адресов в одной и той же подсети. 

    Для подключения к удаленному Linux Ubuntu, можно воспользоваться ярлыком Xlaunch. При подключении с использованием XDMCP необходимо выбрать режим работы в одном окне ( One Window ):

    Xlaunch - режим XDMCP


    Выбираем сессию с использованием XDMCP:

    Xlaunch - режим XDMCP


    Указываем IP-адрес или имя компьютера с ОС Linux, к которому необходимо подключиться:

    Xlaunch - адрес или имя удаленного Linux


    Следующий экран служит для определения дополнительных параметров сессии и его пока можно оставить без изменений. Жмем кнопку "Далее" и, если все сделано правильно - перед нами приглашение менеджера дисплея Linux.
    источник

    Комментариев нет:

    Отправить комментарий