Иногда приходится пользоваться тем, что дали. Мой компьютер, на котором стоит Debian Linux, был занят моей женой (не учите своих жен пользоваться линуксом). Зато был свободен компьютер сестры с установленным на нем Windows. И вот появилось желание подключиться к своему компьютеры с рабочей станции под управлением враждебной OS. Первым, что пришло в голову - это удаленный рабочий стол. Однако, нашлось более элегантное решение. И, несмотря на заголовок статьи, речь пойдет о немного другой технологии. Взгляните на этот снимок:
Вы видите приложения Linux прямо на рабочем столе Windows! Как же они туда попали?
Немного о теории. В отличие от Windows, в Linux графическая оболочка не является частью ядра системы. Стандартная оконная система для Linux - это X Window System, или, попросту говоря, иксы. Она берет на себя отрисовку графических элементов и взаимодействие с устройствами ввода-вывода. А самое вкусное заключается в том, что эта система имеет прозрачную клиент-серверную архитектуру. Оконная система выполняет роль сервера, а графические приложения - роль клиентов. Как и положено клиентам, они подключаются к серверу и взаимодействуют с ним для отрисовки и для получения событий мыши и клавиатуры.
Но это еще не все! Дело в том, что оконная система может находиться на другом компьютере, а графическое приложение связываться с ней через сеть. Так вы можете запустить приложение на удаленном компьютере, заставив его рисоваться на том компьютере, за которым сейчас работаете. Или наоборот. Или запустить программу на одном удаленном компьютере с отрисовкой интерфейса на другом удаленном компьютере. Заманчивая возможность, неправда ли? :-)
Думаю, достаточно теории, давайте приступим к практике.
Для начала подготовим удаленный компьютер Debian Linux. Все, что нам здесь нужно - это SSH-сервер. Через него мы будем подключаться удаленно и запускать нужные нам программы. Выполняем всего одну команду в консоли:
$ sudo apt-get install openssh-server
Все, с этим компьютером мы закончили, и касаться его клавиатуры в ходе этой статьи больше не будем. Теперь можем переходить к подготовке компьютера Windows. Здесь нужно установить две программы:
1. SSH-клиент. Я установил PuTTY.
2. X Server для Windows. Я выбрал Xming.
Обе программы можно загрузить с сайта SourceForge (пакеты Xming и Xming-portable-PuTTY). Также по желанию можно загрузить стандартный набор шрифтов (пакет Xming-fonts). Все, что загрузили - устанавливаем (с полной установкой всех компонент Xming), и переходим к настройке. Теперь главное не запутаться, что к чему будем подключать :-)
Для начала установим соединение по SSH с удаленным компьютером. Для этого запускаем PuTTY. Вводим IP-адрес компьютера Linux.
Теперь переходим в раздел Connection / SSH / X11 и включаем перенаправление графического интерфейса. В качестве расположения X-сервера водим IP-адрес компьютера Windows, за которым сейчас сидим.
Кроме того, чтобы вместо русских букв не всплыли крокозябли, желательно в разделе Window / Translation установит правильную кодировку (у меня - UTF8 - стандартная кодировка на Debian и Ubuntu). Возвращаемся в раздел Session, сохраняем настройки и подключаемся к компьютеру Linux. В случае успешного подключения мы вводим логин и пароль и видим текстовую консоль. С ее помощью мы можем удаленно запустить консольные программы, но графические программы не могут рисоваться в консоли. Поэтому оставим на время наше подключение по SSH.
Теперь настроим Xming. Для этого запускаем программу XLaunch - это мастер настроек. На первом шаге указываем способ интеграции в графическое окружение Windows. Мне более всего по душе первый, когда каждое приложение Linux находится в своем окне.
На втором шаге нам предлагается автоматически запускать какое-нибудь приложение вместе с иксами. Я предпочел сделать это позже по мере необходимости посредством уже запущенного нами PuTTY.
На третьем шаге указываем параметры запуска Xming. Опция Clipboard позволяет интегрировать буфер обмена. Также для полноценной работы я ввел следующие параметры:
"-dpi 96" - чтобы поправить размер шрифтов. Значение можно подбирать по вкусу.
"-xkblayout us,ru" - для работы с двумя раскладками клавиатуры.
"-xkbvariant basic,winkeys" - уточнение раскладок.
"-xkboptions grp:caps_toggle" - переключение раскладки клавишей CAPS LOCK.
И, наконец, на следующем шаге сохраняем настройки кнопкой "Save configuration" и запускаем X-сервер кнопкой "Готово".
В системном лотке появится иконка Xming
В дальнейшем запустить сервер с теми же настройками можно просто путем открытия сохраненного файла. Изменить настройки можно через контекстное меню файла.
Итак, X-сервер запущен. Возвращаемся в нашу консоль, предоставленную соединением SSH. Здесь мы можем удаленно запустить консольное приложение, и в этой же консоли увидим вывод этого приложения. А что теперь будет, если мы попытаемся запустить в этой консоли графическое приложение? Обычно, если вы подключились по SSH и пытаетесь запустить оконное приложение, вы получите ошибку, потому что вы подключились к удаленному компьютеру в консольном режиме, и рисовать окна просто нечем. Однако, в этот раз мы включили перенаправление графики на наш компьютер Windows, на котором уже запущен свой X-сервер. Поэтому, если вы попытаетесь запустить оконное приложение в удаленном консольном терминале, его окно нарисуется на компьютере Windows. Попробуйте, например, набрать следующую команду:
$ kwrite &
или
$ gedit &
Амперсанд в конце команды указывает, что программу нужно запустить в фоновом режиме, чтобы во время ее работы консоль была доступна для других действий.
Ну, надеюсь, у вас все получилось, и на вашем рабочем столе Windows красуются оконные приложения Linux.
Кстати говоря, благодаря этой клиент-серверной архитектуре злоумышленник может отправить на ваш экран окно с просьбой ввести ваш пароль или еще с какой-нибудь гадостью. Чтобы такого не происходило, не подключайтесь к общественным сетям без фаирвола. И помните: большие возможности - это большая ответственность.



108 коммент.:
Будет обрыв связи и все приложения вылетят
Справедливое замечание. Не лишним будет заметить, что этот тип удаленного доступа не является самым удачным в случае медленного или нестабильного соединения. С другой стороны, если два компьютера находятся в офисной или домашней сети, то вероятность обрыва связи невероятно мала :-) В моем случае для подключения к компьютеру в соседней комнате это то что нужно.
Ну а как сделать, чтобы не отваливались? screen-а в консоли будет достаточно? Видимо, нет...
К слову сказать, что при нестабильной связи даже Citryx не гарантирует возврата в сессию. А про потерю работоспособности и вовсе нет смысла говорить не только при нестабильной но и при медленной связи.
Не стоит переживать по поводу "выпадений" из-за плохой связи, т.к. ваши данные на сервере, а значит не критично. Нет и не будет надёжных решений для TCP для нестабильных каналов. Вариант - UDP с собсвенным механизмом контроля прохождения пакетов. Думаю к X серверу это можно прикрутить, программерам в Linux флаг в руки, в Windows - немного другое место :)
В свойствах putty, где X11 forwarding, ip можно не писать... если putty и xming на одной машине - лучше оставить пустым... писать IP нужно если форвардишь икс на "соседнюю" машину...
> Ну а как сделать, чтобы не отваливались? screen-а в консоли будет достаточно? Видимо, нет...
Да, screen в этом случае поможет только тем, что даст возможность посмотреть на вывод ошибки, с которой вылетело окно :-) Если отваливается, вероятно, лучше воспользоваться другим видом удаленного доступа, который возможно восстановить. В этом направлении я еще не эксперементировал.
А у вас буффер обмена работает, а то у меня нет, ругается в лог. :\
Работает. А какое именно сообщение пишется в лог?
>К слову сказать, что при
>нестабильной связи даже
>Citryx не гарантирует
>возврата в сессию.
VNC Вас спасет
Прошу помоч мне разобраться: все делаю как расписано, запускаю gedit c ампрессандом и через некоторое время получаю в консоле сообщение:
"The application 'gedit' lost its connection to the display localhost:10.0;
most likely the X server was shut down or you killed/destroyed the application"
Пару мгновений назад снес пару пакетов гнома, надеюсь это никеак не повлияло на это?
Ой простите, вопрос решился путем очисти строки ip forvarding.
Raa, низкий поклон тебе!
> Ой простите, вопрос решился
Спасибо за инфу! ))
а как например вместо caps поставить shift+ctrl
Попробуйте ctrl_shift_toggle
Спасибо !!!!! все получилось !
а у меня нет, в чём может быть причина? Хотя если идти по пути "Open session via XDMCP" соединение есть.
> а у меня нет, в чём может быть причина?
Трудно сказать без более подробной информации.
Просьба сильно не пинать :) Вот что получаю
[root@localhost ~]# gedit &
[2] 4837
[1] Exit 1 gedit
[root@localhost ~]# Xlib: connection to "localhost:10.0" refused by server
Xlib: No protocol specified
(gedit:4837): Gtk-WARNING **: cannot open display:
Вы уверены, что правильно указали адрес в разделе X11 forwarding в настройках putty? Попробуйте вообще очистить строку X display location, как это уже советовали в комментариях.
народ помогите у меня проблема вот такая
$ PuTTY X11 proxy: XDM-AUTHORIZATION-1 data failed checkkwrite: can not connect to X server localhost:10.0
Слово "localhost" говорит о том, что приложение пытается отрисоваться на том же компьютере, на котором и запускается. Еще раз внимательно прочитайте о настройке PuTTY и все комментарии к статье. Должно помочь. Не забудьте отписаться о результате ;-)
debian:/tmp# startx
xauth: creating new authority file /root/.serverauth.2894
X Window System Version 7.1.1
Release Date: 12 May 2006
X Protocol Version 11, Revision 0, Release 7.1.1
Build Operating System: UNKNOWN
Current Operating System: Linux debian 2.6.18-6-686 #1 SMP Sun Feb 10 22:11:31 UTC 2008 i686
Build Date: 24 January 2008
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Module Loader present
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Thu Jul 17 19:58:56 2008
(==) Using config file: "/etc/X11/xorg.conf"
(EE) I810(0): [dri] DRIScreenInit failed. Disabling DRI.
(EE) AIGLX: Screen 0 is not DRI capable
xkb_keycodes { include "xfree86+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compatibility { include "complete" };
xkb_symbols { include "pc(pc105)+gb" };
xkb_geometry { include "pc(pc105)" };
вот такую штуку оно выдаёт когда я под рутом пытаюсь запустить:)
то есть оно не находит вроде моника или что??
Какое отношение это имеет к удаленному запуску приложений? :-)
ну ка кбы самое прямое.. этов сё запускалось через putty, а не на локальной машине...
машинка с линуксом стоит себе в стронке, без клавы,мыши и моника:)
типа сервачок, а я со своего компа(под виндовсом) пытаюсь сделать так как описано в статье..и вот такую штуку выдало...
если имеет занчение - я подключал моник и всю переферию - кде грузилось%)
В таком случае Вам не следует запускать иксы на линуксе (а именно это и пытается сделать команда startx) хотя бы потому, что этого в статье описано не было :-) Иксы в данном случае должны стоять на машинке с виндой. Xming - это и есть иксы для винды. А на сервере через путти нужно запускать непосредственно ту программу, с которой вы хотите работать, а не иксы. И программа, запущенная на линуксе, будет рисовать свой графический интерфейс посредством Xming на машинке с виндой. Главное, что в этом случае нужно - Xming (или другие иксы) на винде, и правильно настроенный путти (или другой клиент ssh).
И еще, обратите внимание, что, согласно понятиям "клиент" и "сервер", в данном случае машина, которую Вы называете сервером, выполняет роль клиента, а машина с виндой - роль сервера. Возможно, именно это Вас и сбило с толку :-)
нет..называя машину сервачком я имел в виду ее общее назначение...:) тое сть это просто обычно всякие серваки стоят без клав и мишей и моников...
и я как бы не вдумывался что серваер а что клиент..толку от этого?:)) то чтоя правильно пойму,оно лучше работать не станет, ведь делал то я по инструкции:))
В инструкции не сказано, что нужно выполнять команду startx. Читайте внимательно.
хорошо.. я понял, чтопо отдельности програмки запускать надо...
ну вот
debian:~# kwrite &
[1] 5895
debian:~# Xlib: connection to "localhost:10.0" refused by server
Xlib: PuTTY X11 proxy: XDM-AUTHORIZATION-1 time stamp was too far out
kwrite: cannot connect to X server localhost:10.0
не может подключиться к моему Х-серверу..
пробовал в настройках пУти как ставить так и не ставить айпи моего компьютера для форвардинга Ч-сервера....
"connection to localhost:10.0" говорит о том, что приложение пытается подключиться к X-серверу на том же компьютере, где и запускается. Проблема в настройках PuTTY/SSH.
Независимо от того, указываете Вы IP-адрес или нет, должна стоять галочка "Enable X11 forwarding". Вы не забыли включиь эту опцию?
Какая у Вас версия PuTTY? Попробуйте скачать по приведенной в статье ссылке.
"Enable X11 forwarding" - галочка стоит.
pytty - release from 0.60-2008-06-02
это установленная с файлика Xming-portable-PuTTY-7-3-0-19-setup
уменя своя стояла,но там не было плагина для Х11
ЗЫ: японимаю,что проблема в настройки путти...потому и обращаюсь за помощью,так как мало с этим работал...
Возможно, на SSH сервере не разрешено перенаправление иксов.
Залогиньтесь на машину с линуксом. Можно с помощью все того же PuTTY, чтобы не таскать монитор :-)
Откройте для редактирования файл настройки SSH-сервера с помощью любого удобного для вас редактора, например vim. (Если Вы делаете это через SSH, то подойдет любой консольный редактор).
$ sudo vim /etc/ssh/sshd_config
Добавьте следующую строку, если ее нет.
X11Forwarding yes
Сохраните файл настроек и перезапустите SSH-сервер.
$ sudo /etc/init.d/ssh restart
Вероятно, в этот момент SSH соединение будет разорвано. Убедитесь, что поле "X display location" не заполнено, выполните SSH подключение еще раз и попробуйте запустить графическое приложение.
Если приложение все равно не запустилось, попробуйте все-таки указать расположение X-сервера. Введите в поле "X display location" адрес компьютера с виндой, снова выполните подключение и попробуйте запустить графическое приложение. Если все равно не получается, проверьте значение переменной среды окружения DISPLAY. В консоли введите
$ echo $DISPLAY
PuTTY должен был установить тот адрес, который Вы указали в качестве адреса X-сервера. Вывод команды должен примерно таким: "192.168.20.2:0". Если же вывод команды показал ":0", значит, адрес перенаправления по какой-то причине не установлен. Установите его вручную (подставляем свой адрес).
export DISPLAY=192.168.20.2:0
И снова пробуем запустить графическое приложение.
Жду подробного рассказа о ваших действиях и результатах! :-)
ха..тут оказывается гугл авторизайия%))
по теме:
debian:/etc/ssh# kwrite &
[1] 5985
debian:/etc/ssh#
я так понимаю запустилось :)
но ничего не происходит..
да видать была загвоздка в ssh - я читал похожую статью там гворили писать
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
а в примере закоментирован
ForwardX11 no, поменял на yes
и последние строчки закоментил.
...
далее
debian:/etc/ssh# echo $DISPLAY
localhost:10.0
это с пустой строкой "X display location"
пока что так...ещё сейчас попробую айпи прописать в путти...
прописал айпишку в Путти. Выдалоследующую штуку
debian:~# kwrite &
[1] 6004
debian:~# Xlib: connection to "localhost:10.0" refused by server
Xlib: PuTTY X11 proxy: XDM-AUTHORIZATION-1 time stamp was too far out
kwrite: cannot connect to X server localhost:10.0
[1]+ Exit 1 kwrite
debian:~# export DISPLAY=192.168.1.68:0
debian:~# kwrite &
[1] 6007
debian:~#
то есть похоже на то,что запустилось, но картинки так и нет:((
на иконке Xming в трэйе винды показывает следующее
Xming Server: 10.0
может чото тут проблема?
Вообще, в случае SSH указывать X server location не желательно, потому что SSH сервер умеет выступать в качестве прокси для иксов. Приложение думает, что иксы стоят локально, и коннектятся на локалхост, а сервер SSH пересылает эти запросы на удаленный сервер по защищенному каналу. Если же указывать DISPLAY, то подключение к иксовому серверу будет идти в обход SSH - несекьюрно.
"localhost:10.0" - это нормально, когда включен X11Forwarding для SSH сервера.
У вас получается, что куда бы вы не направили графику - через ssh прокси или напрямую - она у вас не отображается. Соединение вроде как проходит, но ничего не рисуется. На этом этапе, думаю, можно оставить в покое настройки SSH. Пусть X display location будет пустым, раз вы не получаете больше ошибок.
Теперь попробуйте поковырять Xming. Например, включите режим One window.
Попробуйте в putty в настройках X11 поменять настройку "Remote X11 Authentication protocol" на MIT-Magic-Cookie-1
Здравствуйте
я пробовал startkde если вовремя нажать ctrl+c то нормально грузится КДЕ , вопрос вот в чём, без ctrl+c не грузицца) почему, если можно линк на русскую справку по putty, и по Xming, код ошибок приведу позже, и ещё вопрос как вывести линукс из спящего режима только консолью, это вообще возможно?
Я не пробовал startkde и не могу ничего хорошего Вам посоветовать. Справку на русском поищите в Гугле. А спящий режим вообще никак не относится к теме :-)
про то что в гуугле есть русская справка я знаю , спасибо ))
зато я пробовал startkde и всем советую - "Товарищи , пробуйте startkde и о результатах пишите здесь"
А разве не интересно попробовать?
Интересно конечно :-) Хотя, я не совсем понимаю, зачем это нужно. Может быть пойму, когда попробую :-) Если не забуду - обязательно попробую. Спасибо.
а-а-а простите я же ничего не обьяснил))
суть в том что стартует целиком оконный менеджер и это неплохая замена vnc получается что под видной на x сервере работает kde с подключенной учёткой, вобщем удалённое подключение к рабочему столу ...
ну, я так и подумал :-)
Были ошибки с запуском приложений типа "cannot open display" с DISPLAY="localhost:10.0". Проблема решилась, хотя DISPLAY и остался такой же.
Спасибо, r1mson.
Дело в том, что SSH умеет работать в качестве прокси для иксов. Это включается опцией "X11Forwarding yes" в конфиге ssh-сервера, что вы и сделали. Если эта опция включена, то дисплеем автоматически устанавливается локалхост, на который вы подключаетесь по ssh, и дальше за сценой происходит переброс данных на ту машину, где установлен X-сервер. В принципе, это предпочтительный вариант, поскольку для передачи данных используется защищенный канал ssh. И тем не менее ничто не мешает вам установить прямое подключение к иксам. В таком случае DISPLAY должен быть отличным от локалхоста.
A.Ly комментирует...
debian:~# kwrite &
[1] 6004
debian:~# Xlib: connection to "localhost:10.0" refused by server
Xlib: PuTTY X11 proxy: XDM-AUTHORIZATION-1 time stamp was too far out
kwrite: cannot connect to X server localhost:10.0
[1]+ Exit 1 kwrite
debian:~# export DISPLAY=192.168.1.68:0
debian:~# kwrite &
[1] 6007
debian:~#
Дарагой выйди из рута, попробуй запустить от пользователя
> без фаирвола
Слово "фаервол" пишется через "е", если вы не знали.
Плюс ещё несколько ошибок, орфографических и стилистических.
Сама статья довольно информативная, добавил в закладки. На случай попадания в аналогичную ситуацию.
)))
Хотелось бы только уточнить: кем именно это слово так пишется? ;-) Лично мною оно пишется через "и". Пишется оно так по причине использования мною такой стилистики с намеренным небрежным написанием терминов, пришедших к нам из иностранных языков и часто не имеющих определенного правильного написания.
А еще, слово "файервол" часто пишется через "Й". А также нередко можно встретить два "Л" на конце :-D Встречается и такое название, как "брандмауер". Но если уж вам хочется писать правильно, то лучше используйте более термин из родного Русского языка: "межсетевой экран".
Что касается ошибок вообще, то я вам скажу, что их наличие очень даже вероятно. Более того, я бы сильно удивился, если бы их не было вообще. Ибо на статьях я не зарабатываю ничего, и абсолютного качества текста не добиваюсь :) А по поводу стилистических я с вами не согласен в самом определении. Уж простите. Это мой стиль. В моем стиле не может быть ошибок, он такой, какой есть :-D
люди, а если задача обратная, запустить графическое приложение удаленно, но чтоб оно отображалось на удаленной машине, а не на той с которой конекчусь.
естественно я на вин удаленный "сервак" - линукс
Тогда:
1. На линуксе должен быть запущен X-сервер.
2. SSH-прокси здесь будет не только не нужен, но и может внести путаницу. На всякий случай убедитесь, что не используете его. Никакие X11Forwarding в конфиге SSH-сервера не нужны.
3. DISPLAY должен указывать на localhost. Скорее всего, это должно быть значение "localhost:0.0". Можно просто ":0.0". Убедиться, что это значение правильное, можете следующим образом: запустите иксы, запустите эмулятор терминала и выполните команду "echo $DISPLAY".
Итого: запускаем X-сервер, подключемся к серверу через SSH, устанавливаем правильно значение для $DISPLAY и запускаем приложение посредством все той же сессии SSH.
to Raa, что то у меня не сложилось.
Например запускаю мплеером видео, выдает следующее:
vo: couldn't open the X11 display (:0:0)!
Error opening/initializing the selected video_out (-vo) device.
.....................
E: client-conf-x11.c: XOpenDisplay() failed
переменую дисплей ставил :0.0 и localhost:0.0
результат тот-же
форвардинг отключил
Возможно я что-то не понял об запущенном X-сервер, я так понял если на удаленой машине запущен гном, то больше ничего и не нужно?
Думаю, не мешало бы покопаться в настройках X-сервера.
Например, я обнаружил, что в Debian по умолчанию отключено прослушивание x-сервером tcp порта. Это значит, что по сети подключиться к иксам не удасться, в том числе и через localhost. Попробуйте поправить вот этот файл:
/etc/X11/xinit/xserverrc
И убрать параметр "-nolisten tcp".
Если все равно не заработает, можно еще попробовать отключить проверку хостов:
xhost +
После выполнения этой команды любой сможет подключиться к вашим иксам, что не есть безопасно. Так что делать такое возможно только в целях эксперемента, или в закрытой сети.
Спасибо, вот это помогло:
/etc/X11/xinit/xserverrc
И убрать параметр "-nolisten tcp".
плюс установить DISPLAY=:0.0
при подключении она вообще не определена
Кроме того, чтобы вместо русских букв не всплыли крокозябли, желательно в разделе Window / Translation установит правильную кодировку (у меня - UTF8 - стандартная кодировка на Debian и Ubuntu)
Мне не помогло... Более того, все меню запускаемых программ на английском языке
Думаю, это проблемы с локалью под тем аккаунтом, под которым вы подключаетесь через SSH.
Не могу запустить gnome или cde под Solaris указанным способом, настройки могу открыть, не которые программы тоже. а сама оболочка не хочет запускаться
Не нужно данным способом запускать гнома и цде. В Xming есть свой оконный менеджер. Скрещивать слона с носорогом (Windows и Gnome) не вижу никакого смысла.
Как сказал один из Анонимусов, VNC Вас спасет!
А можно сделать наоборот? Т.е. я сидя на линухе хочу поюзать некую специфичную виндовс программу с удаленного (в пределах локалки) компа, но не нужен доступ ко всему рабочему столу удаленного компа а только к одной программе.
Можно. Я как раз сегодня удалил с рабочего стола ярлыки для запуска прог на удаленной винде :-) Придется пошариться в корзине...
Делал я это через rdesktop:
rdesktop -u Raa -p '' -b -r sound:local -A -s "c:\\seamlessrdp\\seamlessrdpshell.exe \\"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE\\"" 10.0.0.2
Данная команда выполняет подключение к удаленному рабочему столу и автоматически запускает ИЕ, вместо которого можете подставить любую интересующаю вас программу. Но делает она это не напрямую, а, как видите, через утилиту seamlessrdp. Эта утилита, работая совместно с rdesktop, обеспечивает так называемый seamless mode - т.е. интеграцию в рабочий стол. Включается этот режим ключом '-A'. Каждое созданное в винде окно rdesktop будет рисовать в иксах. Скачать утилиту можно по адресу http://www.cendio.com/seamlessrdp/
Подскажите, а как быть при подключении к одной и той же программе сразу нескольких пользователей (соответственно с разных компьютеров)? Что при этом измениться? Усложняется все тем, что надо запускать виндовую программу, соответственно при помощи Wine`a.
Прежде всего изменится название задачи. Если первая задача - это удаленный запуск приложений, то вторая (если я Вас правильно понял) - это совместная работа. Во-вторых, изменяется то, что приложению будет необходимо подключиться сразу к двум X-серверам. Я не могу сказать наверняка, но мне кажется, такое вряд ли возможно по причине специфичности задачи.
Попробуйте поискать в гугле что-то вроде "Совместная работа в Linux".
> такое вряд ли возможно
...конечно же имеется в виду возможность решения задачи с помощью метода, описанного в статье.
Приветствую всех, особенно многоуважаемого Raa!
У меня совсем извращенная задача - надо под Linux`ом запустить Windows приложение и все это отобразить на другой машине с виндой описанным выше способом.
Сделал все как написано в статье. Установил последнюю версию Wine, запускаю под Linux Debian всем известного минёра, и он нормально запускается. Перехожу на виндовую машину, запускаю Putty, коннекчусь, пишу команду wine winemine.exe и долго наблюдаю за надписями Font Metrics: ...%, плюсом иногда пролетают какие-то сообщения. В итоге через пару минут минёр загружается и появляется у меня на рабочем столе Windows XP. И все бы хорошо, но появляется он очень страшненький, цвета все не те, улыбчивая мордочка - другая. Короче страх!
Подскажите в чем может быть дело? Как заставить любимого минера запускать быстро и таким же красивым, каким он должен быть.
Знаю что задача извращенная, но таковая есть и очень хочется разобраться.
ЗЫ Минер взят для эксперимента.
Попробовал. Запустил удаленно winemine и более сложное приложение FlylinkDC. Все отлично рисуется, никакой разницы, если не считать некоторые тормоза при отрисовке. "Font Metrics" нигде не наблюдал.
Wine у меня обновлялся недавно, Xming я не трогал с тех пор как написал эту заметку. В чем у Вас может быть проблема - мне даже предположить трудно. Попробуйте обновить wine, если он у Вас устаревший. Если проблема просто в страшных шрифтах, то попробуйте подобрать подходящее значение параметра -dpi. Еще я попробовал бы скопировать все шрифты из Windows в wine.
Удачи!
И у меня все заработало. Удалил Wine, скачанный с офф сайта, установил тот, который был с Debian`ом на диске и все заработало. Мораль - надо учиться ставить нормально пакеты... :)
Спасибо за информативный пост!
Подскажите, пожалуйста, хотелось бы сделать для юзера ещё более быстрый доступ к linux-приложениям; можно ли добиться что бы из винды приложение запускалось одним щелчком? без открытия терминала?
Может быть какой-нибудь скрипт, который бы запускал xming, потом putty, сам вводил логин и пароль и запускал команду.
Конечно можно. Xming лучше повесить в автозапуск. Putty, думаю, наверняка имеет какие-нибудь параметры командной строки. К сожалению (или к счастью :) ) нет венды под рукой чтобы проверить. Попробуйте в консоли "putty.exe /?" или "putty.exe --help" Если не имеет - установите другой, консольный клиент ssh. В любом случае, залогиниться по ssh и запустить приложение на сервере - это работа для одной несложной команды. Скрипты будут излишними. Просто создайте ярлык и впишите в его свойствах желаемую команду запуска. Это должно быть несложно, просто изучите руководство по вашему клиенту ssh. Думаю, Вы справитесь.
С графикой всё получилось. спасибо!
А вот как звук запущенного линуксового приложения через xming переправить на виндовую машину?
К сожалению, через Xming этого никак не сделаешь. Техника перенаправления звука очень похожая, но делается через звуковой сервер. Например, можно попробовать сделать это через ESound, как советует автор это заметки:
http://www.liquid-reality.de:8080/display/liquid/ESound+for+Windows
В дополнение к ней замечу, что Вам необходимо настроить ваши приложения (или окружение) так, чтобы они работали через esound. Соответственно, он должен быть установлен не только на сервере (Windows), но и на клиенте (Linux).
Сам лично не пробовал. Так что буду Вам благодарен, если отпишите о результатах :-) Удачи!
Сапсибо за статью, очень полезная!
Но у меня почему-то не захотел таким образом работать Гарант, вроде на команду wine garant.exe & пишет все тоже, что и в самом Linux`a, но вот почему-то ни чего не открывается :(
Спасибо, сейчас поставлю линукс на одну машинку, буду пробовать. А вот если одновременно с 2-х компов в локалке (винда на обоих) таким образом запустить приложение, или не получится?
Получится. Будет два независимых экземпляра приложения.
Если Вас интересует совместная работа - читайте комментарии немного выше.
Всё работает, спасибо=)
Возникает вопрос - а как отображать графику, которая гонится с других устройств (например тв-тюнера)?
Попробовал запустить tvtime - вот что вышло.
lexx@server ~ $ tvtime &
Running tvtime 1.0.2.
Reading configuration from /etc/tvtime/tvtime.xml
Reading configuration from /home/lexx/.tvtime/tvtime.xml
[1] 27552
lexx@server ~ $ xcommon: No window properties found for EWMH.
Xlib: extension "XVideo" missing on display "localhost:10.0".
xvoutput: XVIDEO extension not found: X too old? didn't load extmod?
XVideo - расширение иксов для вывода видео.
Приведенное Вами сообщение об ошибке говорит о том, что у Xming нет этого расширения. Вероятнее всего так оно и есть.
Можно попробовать поставить другой X-сервер, поддерживающий XVideo.
это все замечательно но почему все это тормозит???
сеть сотка абсолючно свободна, процы не загружены на обоих машинах. на мышь нажимаешь пока окно откликнется пол часа пройдет. где узкое место, что делать?
Понятия не имею :(
то есть в хотите сказать что у вас всенормально? нет задержек, окна отзывчевы как будто вы запустили приложение на linux машине?
я не говорю о приложениях, аля калькулятор, я говрю например о приложениях в которых несколько окон например какая-то среда разработки например lazarus. хотя инекрционность я вижу и на маленьких приложениях. в тоже время если открыть к примеру рабочий стол с помощью vnc то тормозов нет вообще.прокоментируйте плиз.
Нет, я как раз хотел сказать, что тормоза замечал, но их причину не понимаю. На нагрузку на сеть и процессоры внимания не обращал. Но тормоза действительно есть. Могу поделиться еще одним наблюдением: когда я пробовал таким образом запускать приложение через интернет, моего терпения на долго не хватило. Это наводит на мысль, что узкое место - сеть. Но почему тормоза даже если компы рядом? Более того, не могу опнять, почему сами иксы вообще такие тормозные, даже если они запущены локально по отношению к приложению.
тогда если смотреть реально практической пользы от того что x можно перенаправлять на сторонний терминал нет. какие еще есть варианты работы с linux-ом, задача все та же. есть грубо говоря консольный linux, как подключиться и открыть на винде иксовое приложение. просто ставить оболочку а потом подключаться через vnc как-то не хочеться, да и неправильно это :). у кого какие мысли есть? или реальный опыт.
Полезная статья, спасибо!
Настроил с ее помощью подключение из windows к линукс-серверу.
Таким образом получаю доступ к графическому интерфейсу программы для мат. рассчетов.
Вопрос: возможно ли вернуть вывод уже работающей программы с виндового X-сервера на родной, линуксовый?
Нужно чтобы после отключения ssh-сеанса графическое приложение продолжало выполняться. Причем получение графического вывода приложения впоследствии не так важно - в результате работы прога создает файл на диске.
Возможно здесь более уместно подключение к линукс-машине по vnc. Правда пока не представляю как сделать, чтобы после закрытия окна vnc-клиента, запущенные в нем задачи продолжали работать на сервере..
Все, вопрос решен!
Оказалось продолжение работы программ, запущенных в vnc-сеансе (после закрытия самого vnc-клиента) - это дефолтная фича vncserver. По крайней мере той версии tightvnc что установилась автоматом на SuSe 10..
Пробую открыть любой текстовый файл и не получается,пишет ошибку,что тут описывали выше не раз.
Вот пример что я хочу открытьи оно никак:
sudo gedit /var/www/testphp.php
mic, спасибо за информацию!
Анонимный, а Вы пробовали запускать gedit от своего имени без sudo?
а у меня такая проблема: при копировании текста в буфер обмена пропадают русские буквы. напрочь. при копировании из одного никсового приложения в другое когда как, иногда теряются, иногда нет. что делать, как быть?
Спасибо за статью! Вопрос такой - не рассматривали ли вариант подключения на линукс сервер с Freenx c Windows машины, но вместо Xming использовать NX Client от No Machine ?
Не рассматривал. Вероятно, этот вариант будет намного проще в конфигурации и быстрее в работе.
FreeNX - свободный терминал под Linux, будет идеальным решением для всех, кто так хотел бы видеть KDE или Gnome удаленной машины целиком. Плюс и звук умеет гнать на локальную, настраивается печать.
Религия Linux запрещает ставить на сервер иксы, но новичкам удобнее работать с графическими утилитами. Уже есть неплохие GUI для самбы, днс и т.д. - можно ли установить только их и запускать через Xming? Кажется тут выше уже спрашивали...
PS. А из линуксовой машины как запустить конкретное приложение на удаленной? VNC целиком рабочий стол показывает. Знаю, что не совсем в тему, каюсь... :)
Установить необходимые графические приложения без локально установленного Х-сервера можно.
Запустить приложение на удаленной машине можно через SSH.
Извините за глупый вопрос, но что может означать ситуация, когда при подключении с пом-ю Putty дохожу до ввода пароля, курсор есть, но ввести ничего не получается, только ввод срабатывает, соответственно связь не устанавливается. Смена раскладки не помогает. Спасибо
Эта ситуация может означать, что Вы впервые вводите пароль в линуксовой консоли. Попробуйте не обращать внимания на это. Просто введите пароль на правильной раскладке и нажмите Enter.
Привет!
Пытаюсь делать все по инструкции. Дойдя до соединения через putty - почему то предлагает залогиниться моим юзером (т.е. он не просит меня ввести логин, а выводит:
Using username "my".
Using keyboard-interactive authentication.
Password:
).
А мне нужно войти под другим логином (не под my). Не подскажете, где это настраивается? Заранее большое спасибо!
В Putty в настройках подключения где-то указывается имя пользователя. Я, к сожалению, не могу вам подсказать, где это, потому что сам с трудом находил, и уже не помню. Но оно там точно есть. Буквально на днях товарищ спрашивал то же самое, и таки нашел :)
Йеххоууу!!Я нашла где это меняется. Полдня на это потратила, а оказывается все было очень просто. Спасибо что подсказали нужное направление! Напишу, вдруг кому-нибудь пригодится:
в настройках Connection -> Data -> Auto-login username -стираете все из этого окошка. Почему то по умолчанию там стоит имя пользователя.
Здравствуйте!
Подскажите пожалуйста, что может означать следующее (вылазит при попытке запустить графическое приложение на солярке):
couldn't connect to display "my_ip:0.0"
(вместо my_ip - Ip виндовской машины)
Никак не хочет видеть и пинг с той стороны тоже не проходит. Может быть в винде где-то стоит запрет, но где это находится, я не знаю. И еще вопрос, где нужно прописывать hxost + (я имею в виду в какой программе, нужен же эмулятор терминала для винды, типа cygwin?? Как вы это делаете, напишите пожалуйста)
Спасибо заранее.
"couldn't connect to display" может означать, что Вы не настроили x11 forwarding в Putty. Попробуйте внимательно перечитать статью и все коментарии к ней. Подобные вопросы уже не раз обсуждались.
hxost + нигде не нужно, настройте x11 forwarding.
X11 настроен, все делаю по пунктам, советы в комментариях применяю, пробую и так и эдак, а результат одан :(
Может быть проблема в том, что удаленный комп находится о-о-очень далеко?..
Спасибо.
Трудно сказать, в чем проблема. Тем более, что если делать "и так, и эдак", то и проблемы могут быть разные. Попробуйте заменить метод научного тыка на разбиение задачи на подзадачи и независимое тестирование каждого аспекта. Попробуйте сначала сделать это без x11 forwarding. Пропингуйте машины в обе стороны, проверье работоспособность каждой из сторон в отдельности, проверьте коммуникацию клиента с сервером посредством сетевого анализатора пакетов. Обратите внимание, что при использовании прямого соединения без x11 forwarding в ssh, сервер (там где x11) должен быть напрямую доступен с клиента (на котором вы запускаете X-приложение). Если это не так (фаирвол, прокси, шлюз), то рассчитывать можно только на перенаправление x11 через ssh. Также заметьте, что если соединение медленное, то результат вас очень сильно огорчит. Так что, есть смысл задуматься об альтернативах: VNC и прочее.
Спасибо большое за ответы.
И так и эдак - это и имелось в виду разбить задачу и тестировать каждого шага :)
Соединение появилось, но дико медленное. (xclock появляется минут через 10 после запуска)
Спасибо за советы и всего вам хорошего! ;)
Ну так значит у Вас все получилось! :) Быстрее, наверное, не будет.
Да, получилось. Я изначально запускала программу, которая не работает. Попробовала xclock и о чудо!:)
XMing установлен на 192.168.1.15
Пробовал и многооконную, и однооконную конфигурацию.
Что может быть?
root@ubuntu:~# gedit
No protocol specified
(gedit:4183): Gtk-WARNING **: cannot open display: 192.168.1.15:0
Смотрите выше.
А куда смотреть? Здесь была проблема с localhost:0, а у меня к удаленному дисплею подключается. Но почему-то не находит какой-то протокол.
Уважаемый Raa !!! сделал все согласно статьи, и все заработалос полпинка , спасибо за статью. Но есть пара вопросов.
1) запускаю 1с 7,7 dbf через multiwindow, скорость почти такая же как на венде, но при закрытии 1с или же выборе даты / открытие еще одного окна / при нажатии на кнопку реакци япроисходить сек через 5
2) возможно ли через putty подключить принтера клиентов которые сидят на венде , без подключеняи жтих принтеров на линукс сервере.
TO Андрей:
я тоже промучался с No protocol specified, помогло установка галочки No access control в окне с параметрами настроек xming
По поводу медленной реакции мне и самому интересно. Если выясните - поделитесь информацией.
Подключение принтеров нужно осуществлять на стороне сервера. Потому что приложение выполняется именно на стороне сервера. Отрисовка интерфейса на удаленных иксах не имеет ничего общего с печатью. Поэтому думайте об этом так, как будто Вы сидите непосредственно за тем самым линукс-компьютером, на котором Вы удаленно запускаете приложение.
Андрей, у меня версия 31 и я не смог найти в каком месте ставится галочка No access control , стоит руский клиент. И еще вопрос насколько различия между платной и беспланой версией. может в платной версии проблему победили с медленным отоброжением.
Отправить комментарий