HowTo: Запуск X-приложений на удаленных серверах Mandriva 2009
Итак, задача такова - Есть две машины. Windows и Linux, нам нужно подцепиться на машину под Linux (на которой нет x-сервера, к примеру – виртуальный хостинг) и запустить там X приложение.
Для начала определимся с терминологией.
X-server – сервер к которому обращаются клиенты – x-приложения и на нем отрисовывают окошки (или что им там надо). Но одного x-сервера недостаточно – для того чтобы он запустился он должен понимать железо на той машине на которой он запускается. Т.е. ему нужны драйвера для видеокарты, мыши клавиатуры, монитора и так далее. Все железо для икс сервера описывается в файле xorg.conf который обычно находится в /etc/X11/xorg.conf.
В частности, на mandriva чтобы поставить x-server нужно поставить пакет task-X11 после чего можно поставить иксовую утилиту XFdrake которая поможет этот конфиг правильно настроить. Иксовый сервер запускается командой startx.
x-client – любое приложение которое используя ресурсы x-server отрисовывает окошки. Это может быть и gnome-session и банальный калькулятор. Все они – клиенты для икс-сервера.
Переменная DISPLAY, переменная – для каждого сеанса пользователя своя. В этой переменной прописывается адрес X-server к которому по умолчанию будут коннектится икс-клиенты. Иначе говоря, заходим на удаленную машину, вбиваем
export DISPLAY=192.168.10.228:0
далее, например набираем
gnome-calculator
И приложение gnome-calculator постучится на сервер 192.168.10.228 на 6000 порт (порт икс сервера по умолчанию) и попросит его отрисовать окошко у себя. Притом что фактически выполняться оно будет на удаленной машине. На икс сервере рисуются ТОЛЬКО окошки.
Этот вариант полностью мы рассмотрим позднее.
Итак, вариант первый элементарный
Ставим Cygwin, (в нете полно статей про манипуляцию с батником запуска икс сервера – но я его попросту не нашел ) в выборе пакетов ставим весь раздел X11
(по сути нам понадобится оттуда всего лишь xorg-server) . Теперь в Пуск-Программы-Сигвин-Х -X-Win Server – запускаем икс сервер под виндами. Собственно можно просто набрать startx из командной строки но программа X-Win сервер несколько более удобна в плане отрисовки окошек.
Теперь запускаем putty, выставляем ей кодировку сервера, лезем в SSH-X11 и ставим там галочку enable X11 forwarding.
Далее в Session – вбиваем ипишник удаленного сервера и заходим на удаленный сервер (Linux в нашем случае).
Что происходит, 6000 порт с нашей локальной машины пробрасывается на удаленный сервер через ssh.
Таким образом при обращении приложения-клиента (на Linux-машине) на локальный адрес (что происходит по умолчанию) он автоматически попадает на 6000 порт нашей Windows -машины, который слушает наш Cygwin-X-server.
На сервере в sshd.conf должна быть строчка X11Forwarding yes
Теперь в консоли putty мы можем набрать, к примеру (разумеется его сначала надо поставить),
gnome-calculator
И окошко отрисуется у нас на виндовой машине. Т.е. gnome-calculator стукнется на локальный 6000 порт и попросит отрисовать окошко – что и произойдет у нас на сервере поскольку этот порт проброшен.
Плюсы этого решения – работает из любого места за любым фаерволлом (единственно наружу ssh сервера (порт 22) должен быть открыт – по NAT), весь трафик икс сервера шифруется.
Если заходить будем не с виндовой машины а с линуха этот проброс можно сделать так
ssh -X ip_addres
Минусы – медленно работает, большая нагрузка на систему, поскольку трафика много и он шифруется-дешифруется
Вариант второй посложнее.
Здесь мы просто скажем приложениям запущенным на сервере коннектиться на наш икс сервер напрямую и отрисовывать на нем окошки. Без проброса портов по ссш.
Ставим и запускаем так же Cygwin, как описано в предыдущем варианте. После чего заходим в командную строку сигвина, пишем
export DISPLAY=192.168.10.228:0
- прописываем, что все икс приложения запускаемые через сигвин будут по умолчанию клиентами локального сервера (в данном случае 192.168.10.228 – внешиний адрес моей Windows машины)
Далее прописываем
xhost +192.168.10.225
где 192.168.10.225 – адрес удаленной машины – Linux сервера. Этой командой мы разрешаем удаленные соединения на наш виндовый икс сервер с удаленной линух – машины.
Теперь x-server на нашей локальной машине можно стартовать (либо startx либо Cygwin X-win server)
Далее заходим на удаленную машину по ssh и пишем
export DISPLAY=192.168.10.228:0
И теперь запускаем приложение
gnome-calculator
или, для запуска gnome
gnome-session
Окошко должно быть отрисовано на нашей Windows машине теперь.
С-нно на нашу виндовс – машину снаружи должен быть проброшен 6000 порт. (можно пробросить и через ссш с параметром – R для putty)
Плюсы – для машин в одной локальной сети – высокая производительность. Можно смотреть Ютуб почти без тормозов
Минусы – отрисовать окошко если вдруг перехватят трафик сможет любая машина. А окошко может быть “введите пароль” итд.
Для двух линукс машин инструкции практически идентичны, только взамен сигвиновского икс сервера бодет использоваться икс сервер линух-машины. А это значит – что окошки с удаленного сервера будут отрисовываться просто поверх окошек пользователя.
Я, к примеру запустил gnome на своей виндовой машине:
Можно увидеть установленные соединения на 6000 порту.
Взято с tht-s.ya.ru

Leave a Reply