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

Xming и удаленная работа с графическим терминалом Linux


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

 При обычном входе в систему Linux через графический терминал вы видите на своем экране приглашение, формируемое менеджером дисплея - Display Manager (далее DM). Кроме обеспечения авторизации, DM также позволяет выбрать графическую оболочку, в которой вы будете работать (KDE, Gnome, Window Maker и т.п.) и, при определенных настройках, обеспечивает возможность удаленного подключения пользователей.

    В настоящий момент в графической подсистеме (X Window System или X11) используются три наиболее распространенных разновидности менеджеров дисплея. Это X Display Manager (xdm), Gnome Display Manager (gdm) и KDE Display Manager (kdm). Самый простой - это xdm, более красивые и функциональные - это gdm и kdm. В последних версиях Linux Ubuntu используется lightdm - лёгкий дисплейный менеджер, основанный на HTML-подобном интерфейсе. Кроме этих, существуют и другие относительно редко используемые, дисплейные менеджеры, расширяющие возможности базового DM. В большинстве операционных систем семейства Linux, менеджер дисплея, используемый по умолчанию указывается в файле /etc/X11/default-display-manager . 




Какой именно менеджер дисплея используется в системе на данный момент, можно проверить с помощью команды ps при запущенной графической оболочке (уровень запуска 5):

# ps -A | grep dm
В результате выполнения команды отобразится список процессов, одним из которых будет мененджер дисплея.

    Для подключения из ОС Windows к графической подсистеме Linux через локальную сеть, Используется специальное программное обеспечение - X-сервер
    Один из наиболее популярных и бесплатных представителей - Xming X Server for Windows 

    Для операционных систем семейства Windows XP/VISTA/7 можно воспользоваться самой распространенной стабильной версией 6.9.0.31 Скачать, (около 2 Мб). Более поздние версии Xming и дополнительные пакеты с поддержкой различных шрифтов, а также локализованную версию мастера Xlaunch найдете здесь:

www.straightrunning.com - сайт проекта Xming

sourceforge.net - раздел проекта Xming на sourceforge.net

Xming устанавливается на компьютере с операционной системой Windows, и позволяет с помощью специального мастера подключаться к рабочему столу Linux с использованием протокола XDMCP, или напрямую работать с отдельными графическими приложениями, запускаемыми на удаленной подсистеме, с использованием технологии перенаправления графического вывода X11 Forwarding. Использование XDMCP позволяет получить доступ к рабочему столу Linux и работать так же, как будто вы находитесь в среде графической подсистемы Linux, а X11 Forwarding позволяет работать с отдельными графическими приложениями, не используя рабочий стол, что дает заметный выигрыш в быстродействии.

Кроме установки пакета Xming на компьютере с Windows, как правило, потребуется выполнение некоторых несложных настроек демона SSH и менеджера дисплея на компьютере с Linux. В качестве Linux будет рассматриваться Mandriva 2010 Free. Для выполнения настроек потребуются права пользователя root 


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

    Менеджеры дисплея (DM) могут настраиваться на поддержку X Display Manager Control Protocol (XDMCP)- протокола, обеспечивающего удаленное подключение графических терминалов (X-терминалов) к графическому серверу (X-серверу). Настроенный на удаленную работу менеджер дисплея, принимает входящие подключения на UDP порт 177 (по умолчанию) сетевого интерфейса локальной сети. Проверить, готов ли менеджер к удаленным подключениям, можно командой:

# netstat -na или netstat -na | grep 177 

    Если UDP порт 177 не слушается системой, значит удаленное подключение с использованием протокола XDMCP невозможно и необходимо выполнить настройки используемого менеджера дисплея (Display Manager). В принципе, не исключено использование для подключения нестандартного номера порта, вместо udp/177, что также задается настройками DM. 

  • Настройка менеджера xdm (Mandriva 2010 Free).


  • Переходим в каталог /etc/X11/xdm и редактируем файл конфигурации xdm-config. Для разрешения удаленного подключения закомментировать строку:

    #DisplayManager.requestPort 0

    Изменения в настройках менеджера дисплея вступают в силу только при его перезапуске, поэтому, после редактирования конфигурационных файлов необходимо или перезагрузиться, или перезапустить графическую подсистему, например выполнив, с обычного терминала, под root-ом последовательно команды

    init 3 - перейти на уровень запуска 3 (без графической подсистемы)

    init 5 - перейти на уровень запуска 5 (с графической подсистемой).

    Для перезапуска текущего менеджера дисплея в Linux Mandriva ( Mageia ) можно использовать команду:

    service dm restart

    Для перезапуска менеджера дисплея lightdm в Linux Ubuntu:

    service lightdm restart 

  • Настройка менеджера kdm Linux Mandriva 2010 Spring Free).

  • Переходим в каталог /usr/share/config/kdm и редактируем файл kdmrc. На самом деле kdmrc - это ссылка на 
    /etc/alternatives/kdm4-config
    , который, в свою очередь является ссылкой на реальный файл конфигурации 

    /var/lib/mandriva/kde4-profiles/free/share/config/kdm/kde4rc


    В секции [Xdmcp] строку Enable=false меняем на:
    Enable=true
    Перезапускаем графическую подсистему.

    В последних версиях KDE, настройки по умолчанию задают режим запуска X-сервера без ожидания TCP подключений ( не слушается TCP порт 6000 ). Это легко проверяется командой netstat -na | grep 6000 и при необходимости, вносятся изменения в конфигурационный файл /usr/share/config/kdm/kdmrc. Для разрешения приема входящих соединений, параметрServerArgsLocal= нужно оставить пустым. По умолчанию, ServerArgsLocal=-nolisten tcp , что приводит к запуску X-сервера с запретом на удаленное подключение. 

  • Настройка менеджера gdm Linux Mandriva 2010 Free.

  • При стандартной установке Mandriva Linux 2010 Spring, менеджер дисплея gdm не инсталлируется, однако, в составе дистрибутива имеется, и при необходимости, может быть установлен. Для разрешения удаленного подключения с использованием XDMCP, нужно перейти в каталог /etc/X11/gdm и подредактировать файл custom.conf. В секции [xdmcp] строку Enable=false меняем на:
    Enable=true
    Перезапускаем графическую подсистему или перезагружаемся и проверяем, слушается ли порт udp/177. 

        Устанавливаем Xming, и запускаем приложение Xlaunch. Для использования XDMCP необходимо выбрать режим работыв одном окне:

    Xlaunch - режим XDMCP


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

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

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


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

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



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

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

        Для организации X11 forwarding нам придется немного изменить настройки ssh-демона Linux. При стандартной установке Linux Mandriva 2010 Spring Free никаких настроек делать не пришлось, но, на всякий случай, их все же не мешает проверить. Все действия требуют права root.

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

    X11Forwarding yes
        Чтобы изменения вступили в силу, демон ssh нужно перезапустить.

    service sshd restart

    После чего графическая подсистема Linux готова к использованию X11 Forwarding.

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

  •     Основные настройки можно оставить по умолчанию или в соответствии с вашими предпочтениями. Для работы с Xming в режиме перенаправления достаточно подправить только секцию SSH:

    PuTTY для X11 forwarding
    Разрешено X11 Forwarding и будет использоваться X-дисплей 0. Использовать 0-й номер дисплея не обязательно, важно, чтобы этот номер совпадал с номером дисплея, указанном при запуске Xming:

    Xming - X11 forwarding


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

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

    Drakdisk  X11 forwarding


    Если возникли проблемы.



        При возникновении проблем с подключением, следует, в первую очередь, просмотреть журналы на стороне Linux и на стороне Windows. Xming, по умолчанию ведет журнал в каталоге %TEMP% зарегистрировавшегося пользователя. Имя файла журнала - Xming.0.log. Вместо "0" в имени могут присутствовать другие цифры. Ошибки, возникающие при старте Xming, фиксируются в файле Xming.log, находящемся в домашнем каталоге Xming (обычно - C:\Program Files\Xming\). Для диагностики на стороне Linux обычно достаточно записей в журнале /var/log/messages

    Наиболее распространенной причиной при невозможности подключения по протоколу XDMCP являются следующие:

    - не слушается порт udp/177, или слушается нестандартный порт, или слушается не на том сетевом интерфейсе
    - подключение блокируется файерволлом
    - менеджер дисплея отвергает удаленное подключение.

    Последняя ошибка внешне выглядит следующим образом - Xming нормально запускается, нет никаких сообщений об ошибках, соединение не разрывается, но экран остается пустым ("серая клетка"). В файле журнала периодически появляется запись :

    winProcEstablishConnection - Hello
    winProcEstablishConnection - Xdmcp enabled, waiting to start clipboard client until fourth call.
    AUDIT: Thu Dec 30 12:37:57 2010: 2292 Xming: client 1 rejected from IP 192.168.0.101
    Auth name: MIT-MAGIC-COOKIE-1 ID: -1 


    MIT-MAGIC-COOKIE-1 - это наиболее популярный протокол авторизации в X-Window, поскольку он самый простой. Для организации удаленного сеанса используется 128-битный ключ, который передается в виде простой текстовой строки. По умолчанию, данные авторизации хранятся в файле .Xauthority домашнего каталога пользователя и состоят из полей с именем компьютера, именем протокола авторизации (MIT-MAGIC-COOKIE-1) и 128-битного ключа. Просмотреть информацию о существующих записях можно с помощью команды xauth list

    Обычно, при правильной настройке PuTTY, для исправления ситуации достаточно на стороне Linux добавить запись для IP-адреса компьютера с Windows в файл /etc/hosts

    192.168.0.11 WINCOMP - для компьютера WINCOMP с IP-адресом 192.168.0.11

    Если на компьютере с Windows существует несколько сетевых интерфейсов, то запись в файл hosts нужно добавлять для каждого из них.

    Для отладки, или временного решения проблемы, можно в строку запуска Xming, добавить параметр -ac, отключающий контроль доступа к серверу ( disable access control restrictions )

    Следующей, наиболее часто встречающейся проблемой, является случай, когда в сеансе пользователя, подключившегося к компьютеру с Linux с помощью PuTTY, выполняется переход в учетную запись суперпользователя root и уже из под нее запускается графическое приложение. Обычно запуск не выполняется и выдается сообщение об ошибке согласования протоколов авторизации:

    PuTTY X11 proxy: wrong authorisation protocol attemptedPuTTY X11 proxy: wrong authorisation protocol attemptedError: cannot open display: localhost:10.0 

    Возможно также сообщение об ошибке авторизации с использованием MIT-MAGIC-COOKIE-1 :

    PuTTY X11 proxy: MIT-MAGIC-COOKIE-1 data did not matchPuTTY X11 proxy: MIT-MAGIC-COOKIE-1 data did not matchError: cannot open display: localhost:10.0 

    Причиной таких ошибок является либо отсутствие файла .Xauthority в домашнем каталоге /root, либо отсутствие в нем необходимых для авторизации записей. В качестве наиболее простого решения проблемы можно воспользоваться добавлением уже существующих и рабочих записей из профиля пользователя в профиль root'а. Для чего нужно:

  • под учетной записью пользователя выполнить команду:
    xauth list
    В результате отобразится информация подобная следующей:

    computer1/unix:10 MIT-MAGIC-COOKIE-1 d6be173154bd0bbb4cec9588b097737a
    computer2/unix:10 MIT-MAGIC-COOKIE-1 bbdf4a00c6bb558fa568bb21cfab9b1f 

  • под учетной записью root добавить данные авторизации командой, например для computer2:

    auth add computer2/unix:10 MIT-MAGIC-COOKIE-1 bbdf4a00c6bb558fa568bb21cfab9b1f

    Чтобы не набирать все это вручную, можно использовать перенаправление вывода команды auth в текстовый файл и создание на основе полученного файла скрипта для добавления записей в профиль root'a:

    - выполнить под учетной записью пользователя команду auth list > /tmp/magiccookies

    под учетной записью root'а отредактировать файл /tmp/magiccookies , добавив в начало нужных строк auth add . Ненужные строки можно удалить. Добавить отредактированному файлу атрибут ”исполняемый” командой chmod +x /tmp/magiccookies и запустить его на выполнение.

    Если в файле журнала ( Xming.N.log ) присутствует строка

    XDMCP fatal error: Manager unwilling Host unwilling

    то это означает, что возникли проблемы с доступом к удаленной системе, и наиболее вероятно, что отсутствует файлXaccess, он пустой, или в файле нет настроек, разрешающих данное подключение. Для диагностики данной проблемы, проверьте конфигурационный файл вашего менеджера дисплея , определите место нахождения Xacess и проверьте его содержимое. Так, например, в конфигурационном файле менеджера kdm в Mandriva, указан путь к файлу Xaccess -/usr/share/config/kdm/Xaccess но сам файл отсутствует. Для решения проблемы можно создать его самостоятельно, с одной единственной строкой, содержащей символ звездочки ( * ) ( разрешено подключение всем ) или использовать файл от менеджера xdm, указав его путь в конфигурационном файле kdmrc секции [Xdmcp] 

    Xaccess=/etc/X11/xdm/Xaccess

    Более разумно, все же разместить файл управления доступом Xaccess в том же каталоге, где расположен конфигурационный файл менеджера дисплея ( DM ).

    Иногда подключение не выполняется, и в файле журнала Xming, после информации об инициализации и используемых шрифтах, присутствует единственная строка

    winDeinitMultiWindowWM - Noting shutdown in progress

    Это сообщение записывается при завершении работы Xming, а тот факт, что между инициализацией и завершением работы нет никаких других событий, означает что от удаленного узла не было получено вообще никакого ответа. Более точную информацию о проблеме можно получить, используя снифферы, например tcpdump на стороне Linux, и tshark на стороне Windows. Для графической среды пользователя можно использовать бесплатный анализатор трафика Wireshark как в среде Linux, так и в среде Windows.

    При изменении настроек в конфигурационных файлах на стороне Linux нужно перезапускать графическую подсистему, например выполнением команд:

    init 3 - переход на уровень запуска 3 ( без графической оболочки )
    init 5 - переход на уровень запуска 5 ( с графической оболочкой )

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

    gdm-restart - перезапустить менеджер дисплея gdm
    service dm restart - перезапустить менеджер дисплея, с использованием скрипта /etc/rc.d/init.d/dm .

    источник
  • Комментариев нет:

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