LINUX.ORG.RU

Удалённое исполнение Х-приложений

 


2

1

СЕРВЕР имеет ПО которому обязательного требуется запуск графической оболочки. Иксы поставлены, но не стратуют при запуске системы, а для запуска и настроек ПО был установлен пакет ThightVNC.

Имеется компьютер-ТЕРМИНАЛ, который должен управлять приложениями на СЕРВЕРЕ так, словно они запускаются на самом терминале.

Итого: передача ОКНА приложения с СЕРВЕРА (из сессии ThightVNC) на ТЕРМИНАЛ.

Я вспомнил что когда-то случайно находил в сети информацию о том что дисплей ThightVNC работает со своим собственным окружением, недоступным для консольных пользователей и даже ОС, а ещё внутри ThightVNC запускается «своя» версия иксов (не та, что в системе), и потому доступны не все «плюшки», Так как ссылка была утеряна - я прошу подтвердить, по возможности, ссылками, что такой вариант проброса не допустим.

Остаются варианты:

1) Передача ОКНА приложения из удалённого Х-сервера (требуется запуск иксов на сервере).

2) Передача ДИСПЛЕЯ с удалённого сервера (ThightVNC передаёт картинку от запущенных на сервере иксов)

Однако не очень хочется, чтобы кто-то находясь рядом с сервером мог увидеть что-то происходящее на экране. Какой вариант решения посоветуете?

★★

3) Запуск удаленных приложений на локальном X-сервере путем его проброса. ssh -X

anonymous
()

man SSH X11 Forwarding. Никакой VNC тебе не нужен, как и иксы на сервере.

Unicode4all ★★★★★
()

На сервере:

xpra start :70 --start-child konsole // или другое приложение/эмулятор терминала
На клиенте:
xpra attach ssh:server:70
Потом из эмулятора можно запускать что нужно. Если соединение отвалится, приложение не умрёт.

Однако не очень хочется, чтобы кто-то находясь рядом с сервером мог увидеть что-то происходящее на экране

Никто не увидит, если не приаттачит запущенный сеанс.

orm-i-auga ★★★★★
()

OMG какая каша, успокой меня, скажи что ты не админ, а к примеру, программист.

anonymous
()
Ответ на: комментарий от Elyas

ssh -X

1) Если на сервере не запущены иксы - не работает. То есть нужно для начала стартовать иксы. По крайней мере у меня не получилось запустить GUI-приложение способом «ssh -X $name».

2) Если на сервере запущены иксы - они «перетягиваются» на терминал. Если на терминале Unity, а на сервере LXDE, то после запуска «ssh -X» unity падает и вместо неё начинает работать LXDE. Что я сделал не так?

Или я в не прав?

zzdnx ★★
() автор топика
Ответ на: комментарий от anonymous

>скажи что ты не админ, а к примеру, программист.

Я не админ. Потому и прошу помощи. Заметь, ПОМОЩИ, а не троллинга.

zzdnx ★★
() автор топика

Помочь не проблема, проблема понять тебя.

vncserver — это Х-сервер у которого, условно, вместо видеокарты tcp socket (vnc protocol). Да это не Xorg, и не все плюшки в нем реализованы.

Имеется компьютер-ТЕРМИНАЛ, который должен управлять приложениями на СЕРВЕРЕ так, словно они запускаются на самом терминале.

Итого: передача ОКНА приложения с СЕРВЕРА (из сессии ThightVNC) на ТЕРМИНАЛ.

Или vncviewer на терминале или на сервере DISPLAY=terminal.domain.com:0 application

Результат будет в некотором смысле одинаковым, в обоих случаях ПО запущено на сервере, а работают с ним с терминала

1) требуется запуск иксов на сервере

Нет

2) Передача ДИСПЛЕЯ с удалённого сервера (ThightVNC передаёт картинку от запущенных на сервере иксов)

vncserver — сам по себе Х-сервер, Xorg на сервере не нужен

Однако не очень хочется, чтобы кто-то находясь рядом с сервером мог увидеть что-то происходящее на экране. Какой вариант решения посоветуете?

vncserver — не виден на экране сервера, это не шindoшs

anonymous
()
Ответ на: xpra от zzdnx

Интересный метод

xpra не метод, а банальный прокси для Х-программ.

anonymous
()
Ответ на: комментарий от anonymous

vncserver — не виден на экране сервера

Это я знаю. Работал уже с этим. Просто никогда ранее не было необходимости запустить конкретное приложение сервера на терминале - всегда запускал vncviewer так, чтобы тот показывал мне весь рабочий стол сервера.

А вот про xpra узнал только что.

zzdnx ★★
() автор топика

Запуская VNC-server, в чем проблема? TightVNC X11-совместимый
И передавай сервер, а приложения пускай в полный экран)

mystery ★★
()
Ответ на: комментарий от mystery

Начальник управляет большим количеством хостов одновременно. Обычно открыто по 5-7 окон удалённого доступа.

Часто возникает необходимость скопипастить текст или выставить окна от разных машин в ряд. Такие задачи не очень хорошо решаются средствами VNC (особенно, пробрасывающего весь рабочий стол удалённой машины). Для удобства необходимо запускать на терминале отдельные окна с разных хостов.

zzdnx ★★
() автор топика
Ответ на: комментарий от orm-i-auga

ЧЯДНТ?

Предположим, на сервере установлен файл-менеджер ROX. На сервере запускаю:

xpra start :70 --start-child rox
Стартует. Тестовое одключение с терминала по ssh (username@servername) проходит удачно. Пробую приаатачиться с терминала:
xpra attach ssh:username@servername:70
Просит пароль username на хосте servername. Независимо от того, ввожу я пароль, или нет - отваливается по таймауту. Логи со стороны сервера:
New connection received
Connection lost
Если ввожу не правильный пароль username - просит ввести пароль заново.

P.S. По мимо rox пробовал другие программы.

zzdnx ★★
() автор топика
Последнее исправление: zzdnx (всего исправлений: 1)
Ответ на: ЧЯДНТ? от zzdnx

А через ssh -X запускаются приложения? Локально на сервере запущенные приложения аттачатся на другие дисплеи (xpra attach :70)?

orm-i-auga ★★★★★
()

Потому и прошу помощи
Заметь, ПОМОЩИ, а не троллинга.

Нашел с кем договариваться. Не хочешь тролинга? Не поощряй его, — тупо игнорируй ананимаса. Ананимас как правило — беспринципная шлюха, потому и ананимас, так что переговоры с ним вести бесполезно.

Csandriel
()
Ответ на: комментарий от anonymous

Результат будет в некотором смысле одинаковым, в обоих случаях
в некотором смысле

Очень четкая, уместная оговорка. Ибо из двух вариантов только второй правоверен. Можно понять велоконструкторов, ваяющих свои решения для уже решенных проблем: пользоваться своим тупо приятнее. Но очень сложно понять тех, кто пользуется чужими велосипедами, игнорируя существующие штатные решения.

Csandriel
()
Ответ на: ssh -X от zzdnx

ssh -X

1) Если на сервере не запущены иксы - не работает. То есть нужно >для начала стартовать иксы.

бред. нигде кроме клиента работающий хсервер не нужен.

anonymous
()
Ответ на: ssh -X от zzdnx

Если на терминале Unity, а на сервере LXDE, то после запуска «ssh -X» unity падает и вместо неё начинает работать LXDE. Что я сделал не так?

Должно быть забыл сменить tty. Мне удавалось на одной машине в разных терминалах запускать, ЕМНИП, кеды и XFCE. По идее это были две копии Xserver, работающих с одной машиной. Как это нашаманил, не помню. В 12.1 сюзе это не получалось, бубна не осилил, а вот в 13.1 получилось само, но не помню как. V_v

Csandriel
()
Ответ на: комментарий от orm-i-auga

Через «ssh -X» запускаются.

Запущенные командой «xpra start :70 --start-child name» не аттачатся с удалённого хоста (хотя процесс xpra на сервере есть и отзывается корректным завершением на «xpra stop»).

Локально приаатачить не пробовал.

Кстати, в netstat вижу повившийся порт 6070, вместо указанного порта 70. %)

zzdnx ★★
() автор топика
Последнее исправление: zzdnx (всего исправлений: 1)
Ответ на: комментарий от Csandriel

Скорее всего:

Забыл сменить tty.

zzdnx ★★
() автор топика
Ответ на: ЧЯДНТ? от zzdnx

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

Csandriel
()
Ответ на: комментарий от Csandriel

и не очень глубоко совал.

в них свой хобот ^_^ Воизбежание кривотолков

Csandriel
()
Ответ на: комментарий от Csandriel

Что имелось в виду:

#>echo $DISPLAY
обычно пишет

:0

Что подразумевает

localhost:0

Но ведь в этой переменной может быть что угодно. В частности, как-то приходилось из atd обращаться к иксовому приложению, от имени юзера, хотя atd работает строго из под рута, у меня во всяком случае. Ну так вот, умельцы подсказали, что нужно не просто звать прогу, а прежде указать окружение:

DISPLAY=:0; и_потом_уже_резвимся

Csandriel
()
Ответ на: комментарий от Csandriel

получилось само, но не помню как. V_v

startx в отдельном терминале, вспомнил, и только что опробовал. Но это получается сессия рута, если не выставить suid для /usr/bin/Xorg Можно и юзером залогиниться, но это будет, опять же, другая сессия, хотя того же юзера. Но здесь не в иксах дело, а в том что tty и существуют для различных сессий. Как подключиться разными DE к одной и той же сессии на одной и той же машине - пока не соображу. Очень любопытно, как это будет выглядеть.

Csandriel
()
Ответ на: комментарий от Csandriel

Как подключиться разными DE к одной и той же сессии на одной и той же машине - пока не соображу.

КО Голоса в моей голове подсказыавают что каким-то макаром нужно указать иксам нужный целевой tty нужной сессии, хотя и запускать иксы из другого.

Csandriel
()
Ответ на: комментарий от Csandriel

каким-то макаром нужно указать иксам нужный целевой tty нужной сессии

А вот здесь, как подсказывает глас свыше интуиция, очень может пригодиться shh. А вот его я как раз никогда не щупал, не няшил.

Csandriel
()
Ответ на: комментарий от anonymous

я, думаю что "и даже ОС"

у него примерно, полунамётками, получилось ведроид описать по принципу, а так, чего он хочет - так эта технология интеловцев, vPro обзывается.

anonymous
()
Ответ на: комментарий от orm-i-auga

Собрал тестовый стенд с LiveCD. Поставил xpra, keepassx и rox, gnome-terminal идёт в комплекте с системой.Запуск проходит успешно:

xpra start :70 --start-child gnome-terminal
Пробую аттачиться локально:
xpra attach :70
Открывается новый терминал. Из него запускается rox и keepassx, по «Ctrl+C» исчезают все 3 окна, при попытке приаттачиться заново - восстанавливаются все 3.

Повторил этот эксперемент запустив серверную часть xpra с tty1, и аттачась из графической среды - работает.

Пытаюсь аттачиться извне (используя ssh) - соединение автоматически закрывается («Connection lost»). Пробую войти на сервер по ssh и приаттачиться локально - жалуется, что не указан дисплей (что вполне ожидаемо).

Попробую ковырять дальше...

zzdnx ★★
() автор топика
Ответ на: комментарий от zzdnx

На стороне клиента после ввода пароля получаю перу ошибок:

.xpra/run-xpra: 3: .xpra/run-xpra: cs-window-active=10: not found
.xpra/run-xpra: 3: cs-window-active: bad variable name

После чего «Connection lost».

zzdnx ★★
() автор топика
Ответ на: комментарий от Eddy_Em

Да они вообще разные о_О

.xpra/run-xpra сервера - 135 строк.

.xpra/run-xpra терминала - 61 строка.

В серверном .xpra/run-xpra, кстати, есть и объявление и экспорт переменной «cs-window-active».

zzdnx ★★
() автор топика
Ответ на: Да они вообще разные о_О от zzdnx

Найден костыль:

На сервере: «xpra start :70 --start-child gnome-terminal»

На клиенте: «ssh -X username@servername»

В полученной ssh-сессии: «xpra attach :70»

Почему не работает «xpra attach ssh:username@servername:70» - пока не понятно

zzdnx ★★
() автор топика
Ответ на: комментарий от zzdnx

Что за дистрибутив и версия xpra? На дебиане больше года использую в разных комбинациях, была лишь как-то проблема с утечкой памяти на клиенте, если на сервере fglrx-драйвер, решилось через --encoding png. Удаление .xpra не помогает? На клиенте опция --encoding png ничего не меняет? Опция -d all не даёт никакой полезной информации?

orm-i-auga ★★★★★
()
Ответ на: Найден костыль: от zzdnx

CONNECTION STRINGS Xpra supports 3 types of connection strings:

:DISPLAY Local displays: this is the simplest form and is only valid for the current local displays of the current user.

tcp:[USERNAME@]HOST:PORT[:DISPLAY] TCP mode uses port numbers and not display numbers. If multiple displays are available through a single TCP port (using a proxy server), then one can also specify the display number.

ssh/[USERNAME[:PASSWORD]@]HOST[:SSH_PORT]/DISPLAY SSH mode allows most common connection options to be specified using the connection string. Further options can be specified using the --ssh command line option.

For backwards compatibility, SSH mode also supports the syntax: ssh:[USERNAME[:PASSWORD]@HOST:DISPLAY but this form does not support specifying the SSH port number.

nosuchuser
()
Ответ на: комментарий от orm-i-auga

дистрибутив и версия xpra

xpra v0.12.3

Одна ОС - динукс минт, обновлённый до Ребекки командами терминала (не distupgrade, а дикими плясками, закончивштмися подменой sources.list), другой - Ребекка.

У них сильно отличаются .xpra/run-xpra.

Переустановка (удалял с purge) - не помогла.

fglrx нет на обеих машинах.

Обнаружилось вот что: Если я на сервере запускаю xpra под исками (оболочка fvwm-crystal) - клиент не цепляется с известной ошибкой. Если запуск серверной части проходит в тексторой консоли (tty1) - работает!

Параметр "-d all" не дал ничего такого, за что я бы смог зацепиться...

zzdnx ★★
() автор топика
Последнее исправление: zzdnx (всего исправлений: 1)
Ответ на: ssh -X от zzdnx

после ssh -X ты получишь удалённую консоль. в ней и запускай морду. графика будет на твоём хсервере отображаться.

если не работает проверь в конфигах включён ли xforwarding.

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

anonymous
()
Ответ на: комментарий от anonymous

Спасибо

Я уже разобрался в этом на практике.

zzdnx ★★
() автор топика
Последнее исправление: zzdnx (всего исправлений: 1)

Мне обычно хватает

while true ; do
  DISPLAY=ТЕРМИНАЛ:0 приложение
done
+ немножко xauth-а

DonkeyHot ★★★★★
()
Ответ на: комментарий от orm-i-auga

Результаты тестирования xpra

Тестовый стенд:

Клиент: ноутбук. 
Сервер: в качестве серверов выступали разные дистрибутивы linux, все в виртуальных машинах.
Проведение теста:
Подготовка:
Клиент использует ssh, чтобы поднять со стороны сервера xpra-сессию, в которой запущен терминал.

Подключение:
Вариант №1: утилита xpra: xpra attach ssh:username@servername:70
Вариант №2: ssh-туннель: ssh -X username@servername xpra attach :70
Результаты:
У некоторых машин вариант №1 после ввода пароля без сбоев или ошибок отваливается по таймауту. 
Если пароль был введён не верно - запрашивает его снова. Не получив пароля - отваливается по таймауту.
Вариант №2 работает всегда.
Версия xpra одинаковая. Пробовал переустановку xpra, в том числе с ручной и/или автоматической чисткой конфигов. Так же замечено, что скрипты ~/.xpra/run-xpra на разных дистрибутивах получаются разными.

zzdnx ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.