И так,
задача - дистанционно
залогиниться на 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. Тут ничего сложного нет.
[codesyntax lang="bash"]man useradd[/codesyntax]
вам в помощь
Например
[codesyntax lang="bash"]sudo useradd -d /home/{имя юзера} -m -s /bin/bash {имя юзера} ; sudo passwd {имя юзера}[/codesyntax]
После этой команды вас попросят ввести пароль для новой учетной записи.
2. Установка (если не установлено ранее) и настройка SSHd
Устанавливаем SSHd (если нет)
[codesyntax lang="bash"]apt-get install sshd[/codesyntax]
в конфигурационном файле /etc/ssh/sshd_config настраиваем права доступа
DenyUsers all
AllowUsers {имя юзера}
(можно оставить по умолчанию)
И разрешаем трансляцию X сессии, для этого нужно исправить соотв. строчку на
X11Forwarding yes
и перезапустить сервер sshd:
[codesyntax lang="bash"]sudo /etc/init.d/ssh restart[/codesyntax]
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
В появившейся консоли вводим
[codesyntax lang="bash"]ssh -Y {имя юзера}@{адрес Linux сервера}[/codesyntax]
после принятия ключа сервера и ввода пароля попадаем в консоль удаленного сервера.
Теперь можно запускать X-приложения на Linux с отображением окон программ на нашем Windows компьютере!
5.2 С помощью Putty
Такое получится, если запустить
[codesyntax lang="bash"]Nautilus&[/codesyntax]
и в нем пооткрывать окон и т.п.
BONUS: То-же, но если оба компа под Linux
Выполняем пункты 1-2 на Linux сервере, затем на Linux клиенте выполняем пункты 5-6
Не забываем, что в пункте 5 в консоли вводим
[codesyntax lang="bash"]ssh <strong>-Y</strong> {имя юзера}@{адрес Linux сервера}[/codesyntax]
Опция
-Y разрешает работу графических приложений под SSH
---------------------------------------------------
На всякий случай предупреждаю:
переключить запущенное приложение с одного X-сервера на другой невозможно! Т.е. если вы запустили приложение по SSH, то и работать с ним сможете по SSH, чтобы продолжить с ним работу на самом сервере непосредственно (или перевести в "фоновый" режим), приложение придется выключить и запустить уже на сервере заново
Советую почитать http://ru.wikipedia.org/wiki/X_Window_System
Ну, собственно все!
Удачных экспериментов! )))