Блог - Linux, программирование, Я!

linux и системное администрированиеДистанционно запустить Linux X приложение на Windows

И так, задача – дистанционно залогиниться на Linux машине (с внешним айпи) и запустить на ней X (графическое) приложение Linux, работая при этом в Windows (внешний айпишник не нужен, просто доступ в инет)

Ну, бывает что обычной командной строки через Putty SSH не хватает и нужно поработать удаленно с какой-либо графической програмкой… Скажем, поставить в DC++ на скачку фильмец или еще чего…

Если набрать в командной строке

linuxdcpp

в ответ получим что-то вроде

Error! Unable to open display

Как же с этим справиться?

Самый простой вариант (на мой взгляд):

1. Создание необходимых учетных записей на Linux машине

2. Установка (если не установлено ранее) и настройка SSHd

3. Установка на Windows пакета программ Cygwin, включая Cygwin/X

4. Запуск X сервера на Windows с требуемыми параметрами

5. Логин на удаленной Linux машине через ssh (с помощью того же Cygwin или Putty)

6. Собственно запуск приложения и работа в нем))

BONUS: То-же, но если оба компа под Linux

Теперь подробности:

Я работаю в Ubuntu 7.10 и Windows XP SP2, поэтому все что пишу дальше относится в первую очередь к ним. 1. Создание необходимых учетных записей на Linux машине

Ну, думаю ничего сложного в этом нет. Создаем юзера с реальными домашним каталогом и командной оболочкой, через которого будем логиниться по ssh. Тут ничего сложного нет.

man useradd

вам в помощь

Например

sudo useradd -d /home/{имя юзера} -m -s /bin/bash {имя юзера} ; sudo passwd {имя юзера}

После этой команды вас попросят ввести пароль для новой учетной записи.



2. Установка (если не установлено ранее) и настройка SSHd

Устанавливаем SSHd (если нет)

apt-get install sshd

в конфигурационном файле /etc/ssh/sshd_config настраиваем права доступа

DenyUsers all

AllowUsers {имя юзера}


(можно оставить по умолчанию)

И разрешаем трансляцию X сессии, для этого нужно исправить соотв. строчку на

X11Forwarding yes

и перезапустить сервер sshd:

sudo /etc/init.d/ssh restart

3. Установка на Windows пакета программ Cygwin, включая Cygwin/X

Скачиваем файлик http://cygwin.com/setup.exe (это аналог менеджера пакетов Linux), запускаем:

Пакеты:

Минимум загрузки для работы X сервера и ssh:

отметить сверху радиобатон Keep вместо Curr

Затем отметить для установки (раздел/пакет):

Net/OpenSSH

Shells/bash

Shells/ash

X11/xorg-x11-base


Остальные необходимые пакеты(зависимости) установятся автоматически

Загрузится порядка 36Мб пакетов

Оптимально по юзабилити (если хотите юзать не только X-сервер)

оставить радиобатон Curr

Затем отметить для установки:

Net/OpenSSH

X11/xorg-x11-base


Остальные необходимые пакеты(зависимости) установятся автоматически

Загрузится порядка 53Мб пакетов, зато получите практически полноценный linux))

Если предпочитаете (и не зря) использовать putty, то устанавливать Net/OpenSSH не нужно

Да в принципе можно и командную оболочку Shells/bash, Shells/ash не устанавливать, я не пробовал.

Потом все это дело скачается:

Установится

4. Запуск X сервера на Windows с требуемыми параметрами

переходим в папочку

C:cygwinusrX11R6bin

находим там файлик startxwin.bat делаем, для того, чтобы можно было переключать раскладку в X-окнах так:

ищем строку

%RUN% XWin -multiwindow -clipboard -silent-dup-error

и преобразуем её к виду

%RUN% XWin -multiwindow -clipboard -silent-dup-error -xkblayout "us,ru" -xkbvariant ",winkeys" -xkboptions "grp:ctrl_shift_toggle"

И запускаем этот файл!

Видим такое:

Запускается X – графическая консоль и в трее появляется значок X

В принципе теперь уже можно запускать локально X-приложения.

5. Логин на удаленной Linux машине через ssh

5.1 С помощью Cygwin SSH

В появившейся консоли вводим

ssh -Y {имя юзера}@{адрес Linux сервера}

после принятия ключа сервера и ввода пароля попадаем в консоль удаленного сервера.

Теперь можно запускать X-приложения на Linux с отображением окон программ на нашем Windows компьютере!

5.2 С помощью Putty

Такое получится, если запустить

Nautilus&

и в нем пооткрывать окон и т.п.

BONUS: То-же, но если оба компа под Linux

Выполняем пункты 1-2 на Linux сервере, затем на Linux клиенте выполняем пункты 5-6

Не забываем, что в пункте 5 в консоли вводим

ssh 
-Y {имя юзера}@{адрес Linux сервера}

Опция -Y разрешает работу графических приложений под SSH

---------------------------------------------------

На всякий случай предупреждаю: переключить запущенное приложение с одного X-сервера на другой невозможно! Т.е. если вы запустили приложение по SSH, то и работать с ним сможете по SSH, чтобы продолжить с ним работу на самом сервере непосредственно (или перевести в "фоновый" режим), приложение придется выключить и запустить уже на сервере заново



Советую почитать http://ru.wikipedia.org/wiki/X_Window_System

Ну, собственно все!

Удачных экспериментов! )))