Re[3]: Удаленный запуск приложения
От: Pzz Россия https://github.com/alexpevzner
Дата: 29.01.20 16:13
Оценка: +1
Здравствуйте, Maveric_, Вы писали:

M_>Подробности:

M_>1. наблюдается на системах RHEL 7.2, 7.4
M_>2. к сожалению, сейчас точно сказать нельзя было ли на третьей машине "ssh -X" в тот момент, но вполне могло быть

Вот если, например, запустить на машине A firefox, потом пойти на машину B по SSH, и тоже запустить firefox, то реально firefox, запущенный на машине A откроет еще одно окно, а firefox, запущенный на машине B, по-тихому завершится. Это потому, что второй firefox найдет первый и передаст ему url, а сам окончит работу — механизм у них такой, чтобы не плодить процессов. А искать он его будет посредством X-сервера, и найдет он, сам того не понимая, процесс, запущенный с другой машины. Жутко, кстати, раздражает, если URL это какой-нибудь file://..., файловые системы-то на разных машинах разные.

Так вот, не может ли быть и тут, что какая-то шибко умная программа, которая уже имеет окно на третьей машине, при попыткее ее еще раз запустить, открывает еще одно окно на той же машине, а не где сказали?
Удаленный запуск приложения
От: Maveric_  
Дата: 29.01.20 10:23
Оценка:
Здравствуйте.

Все знают как linux/unix можно запустить gui-приложение на удаленной машине.
Можно сделать что-то типа:
[user@host]$ ssh -X remote_host
[user@remote_host] gedit


для скорости можно сделать что-то типа такого:
[user@host]$ ssh -X remote_host gedit


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

Подскажите пожалуйста по какой причине может такое приходить ?

Заранее спасибо.
Re: Удаленный запуск приложения
От: Слава  
Дата: 29.01.20 10:32
Оценка:
Здравствуйте, Maveric_, Вы писали:

M_>Подскажите пожалуйста по какой причине может такое приходить ?


По такой причине, что приложение откуда-то должно брать адрес x-сервера. И оно берёт из переменной окружения, обычно, а если там указан не тот адрес — то не там и откроется.
Re[2]: Удаленный запуск приложения
От: Maveric_  
Дата: 29.01.20 10:42
Оценка:
Здравствуйте, Слава, Вы писали:

С>Здравствуйте, Maveric_, Вы писали:


M_>>Подскажите пожалуйста по какой причине может такое приходить ?


С>По такой причине, что приложение откуда-то должно брать адрес x-сервера. И оно берёт из переменной окружения, обычно, а если там указан не тот адрес — то не там и откроется.

... Вы имеете в виду переменную $DISPLAY ? Можете более детально раскрыть свою мысль ?
Re: Удаленный запуск приложения
От: aik Австралия  
Дата: 29.01.20 10:48
Оценка:
Здравствуйте, Maveric_, Вы писали:

M_>Но бывает так, что при выполнении такой команды окно приложения открывается не на host, а на некой третьей машине.

M_>Вероятно, это проблема конфигурации этих машин. Система на них устанавливается по автоматизировано сети.

Иксоовые проги выводят туда, куда показывает $DISPLAY. когда делаешь "ssh -X", локальный клиент открывает форвард удаленного порта на локальный (типа как -Rxxx), и выставляет переменную $DISPLAY там во что то типа "localhost:10.0", соответственно, если где то с форвардами что то сломалось — порт (база + 10, забыл что там за база, 6000?) локального хоста может быть зафоррважен куда то ещё. Или $DISPLAY прибит гвоздями в .bashrc на удалённой машине, или там tmux/screen, или сломан xauth (забыл его роль точно).
Re[2]: Удаленный запуск приложения
От: Maveric_  
Дата: 29.01.20 11:14
Оценка:
Здравствуйте, aik, Вы писали:

aik>Здравствуйте, Maveric_, Вы писали:


M_>>Но бывает так, что при выполнении такой команды окно приложения открывается не на host, а на некой третьей машине.

M_>>Вероятно, это проблема конфигурации этих машин. Система на них устанавливается по автоматизировано сети.

aik>Иксоовые проги выводят туда, куда показывает $DISPLAY. когда делаешь "ssh -X", локальный клиент открывает форвард удаленного порта на локальный (типа как -Rxxx), и выставляет переменную $DISPLAY там во что то типа "localhost:10.0", соответственно, если где то с форвардами что то сломалось — порт (база + 10, забыл что там за база, 6000?) локального хоста может быть зафоррважен куда то ещё. Или $DISPLAY прибит гвоздями в .bashrc на удалённой машине, или там tmux/screen, или сломан xauth (забыл его роль точно).


1. Переменные DISPLAY на машинах выставляются в "localhost:10.0", "localhost:11.0" и т.д.
2. DISPLAY гвоздями не прибит.
3. tmux/screen не используется.

И, конечно, Вы правы где-то что-то сломалось.
Re: Удаленный запуск приложения
От: Zhendos  
Дата: 29.01.20 12:31
Оценка:
Здравствуйте, Maveric_, Вы писали:

M_>Здравствуйте.


M_>Все знают как linux/unix можно запустить gui-приложение на удаленной машине.

M_>Можно сделать что-то типа:
M_>
M_>[user@host]$ ssh -X remote_host
M_>[user@remote_host] gedit
M_>


А почему '-X' вместо '-Y'?

И не хватает подробностей, на какой машине открывается приложение,
вместо машины на которой запущены "ssh -X", запущены на этой третьей машине "ssh -X"
куда-то и т.д.
Re: Удаленный запуск приложения
От: Pzz Россия https://github.com/alexpevzner
Дата: 29.01.20 14:57
Оценка:
Здравствуйте, Maveric_, Вы писали:

M_>Подскажите пожалуйста по какой причине может такое приходить ?


Шпионят.

Я бы предположил, что скрипты, которые исполняются на той машине, на которую зашли по ssh, зачем-то переопределяют переменную DISPLAY.
Re[2]: Удаленный запуск приложения
От: Maveric_  
Дата: 29.01.20 15:20
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, Maveric_, Вы писали:


M_>>Подскажите пожалуйста по какой причине может такое приходить ?


Pzz>Шпионят.


Pzz>Я бы предположил, что скрипты, которые исполняются на той машине, на которую зашли по ssh, зачем-то переопределяют переменную DISPLAY.


Нет. Все машины наши и таких скриптов нет.

P.S.: система RHEL 7.2, 7.4
Re[2]: Удаленный запуск приложения
От: Maveric_  
Дата: 29.01.20 15:30
Оценка:
Здравствуйте, Zhendos, Вы писали:

Z>Здравствуйте, Maveric_, Вы писали:


M_>>Здравствуйте.


M_>>Все знают как linux/unix можно запустить gui-приложение на удаленной машине.

M_>>Можно сделать что-то типа:
M_>>
M_>>[user@host]$ ssh -X remote_host
M_>>[user@remote_host] gedit
M_>>


Z>А почему '-X' вместо '-Y'?


Z>И не хватает подробностей, на какой машине открывается приложение,

Z>вместо машины на которой запущены "ssh -X", запущены на этой третьей машине "ssh -X"
Z>куда-то и т.д.

Подробности:
1. наблюдается на системах RHEL 7.2, 7.4
2. к сожалению, сейчас точно сказать нельзя было ли на третьей машине "ssh -X" в тот момент, но вполне могло быть

Думаю, что можно использовать "-Y" вместо "-X". Думаете "-Y" может приводить к подобной ситуации ?
Re[3]: Удаленный запуск приложения
От: Pzz Россия https://github.com/alexpevzner
Дата: 29.01.20 16:03
Оценка:
Здравствуйте, Maveric_, Вы писали:

M_>Нет. Все машины наши и таких скриптов нет.


Ну, не очень понятно.

Процесс там под капотом происходит следующий. Когда кто-то подсоединяется к SSH-серверу, сервер открывает незанятый TCP-порт с адресом типа localhost:6000+N, где N — некое небольшое число, и записывает этот адрес в переменную DISPLAY. Т.е., у меня, например, для адреса localhost:6010, echo $DISPLAY говорит localhost:10.0 (зачем там еще .0 дописано, к делу не относится).

Соответственно, любая иксовая программа, когда ее запускают, присоединяется к этому адресу. И SSH-сервер пробрасывает это соединение внутри своего SSH-соединения на сторону SSH-клиента. А SSH-клиент, соответственно, смотрит на $DISPLAY уже на своей стороне, присоединяется туда с помощью TCP-сокета, и пробрасывает поток данных из SSH соединения в этот сокет.

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

P.S. А это со всеми приложениями происходит, или с каким-то одним?
Re[4]: Удаленный запуск приложения
От: Maveric_  
Дата: 30.01.20 09:52
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, Maveric_, Вы писали:


M_>>Нет. Все машины наши и таких скриптов нет.


Pzz>Ну, не очень понятно.


Pzz>Процесс там под капотом происходит следующий. Когда кто-то подсоединяется к SSH-серверу, сервер открывает незанятый TCP-порт с адресом типа localhost:6000+N, где N — некое небольшое число, и записывает этот адрес в переменную DISPLAY. Т.е., у меня, например, для адреса localhost:6010, echo $DISPLAY говорит localhost:10.0 (зачем там еще .0 дописано, к делу не относится).


Pzz>Соответственно, любая иксовая программа, когда ее запускают, присоединяется к этому адресу. И SSH-сервер пробрасывает это соединение внутри своего SSH-соединения на сторону SSH-клиента. А SSH-клиент, соответственно, смотрит на $DISPLAY уже на своей стороне, присоединяется туда с помощью TCP-сокета, и пробрасывает поток данных из SSH соединения в этот сокет.


Pzz>Непонятно, где в этой конструкции данные могут ответвиться на другую машину. Разве что кто-то где-то "поправил" DISPLAY. И это, скорее всего, на стороне сервера, потому что на стороне клиента это было бы сразу заметно — все локальные окна тоже оккрывались бы "не на месте".


Pzz>P.S. А это со всеми приложениями происходит, или с каким-то одним?


Как работает проброс иксов я представляю.
Замечено на gedit, nautilus, gnome-terminal. Думаю, что другие приложения тоже так "могут".
Кстати, на RHEL 6.x такого не замечено. Вероятно, это связано с тем, что при запуске некоторых новых приложений они не запускают новый процесс, а создают новое окно в уже запущенном...
Видимо, надо добиться запуска нового процесса в любом случае.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.