LINUX.ORG.RU

подключившись по ssh, запустить GUI прогу на удаленной машине

 ,


1

1

привет!

подключился по ssh как root(нужно именно как root) к удаленной машине. на удаленной машине есть xserver, он запущен и работает как надо.

вопрос в том, как в данной ситуации запустить GUI прогу на удаленном компе чтоб она отображалась на удаленном компе?

сейчас получаю ошибку: XOpenDisplay: unable to open display

спасибо.

★★★

Последнее исправление: niXman (всего исправлений: 1)

Ответ на: комментарий от PexuOne

в X11 переменную DISPLAY= используют

и? что это значит? ну, используют - ок. но как это отвечает на мой вопрос?

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

в $HOME/.ssh/config

Host *
    ForwardX11 yes

ssh host gedit - запустит gedit на host, окно выведет туда, откуда ты делал команду
ssh host DISPLAY=:0 gedit - запустит gedit на host, окно выведет на :0 host-a

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

это конфиг клиента, который убирает твою ошибку XOpenDisplay: unable to open display
по задаче он тебе ненужен, показан для разнообразия ответа.

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

ясно, но что-то не так...

ssh root@192.168.0.100 'DISPLAY=:0 galculator'
root@192.168.0.100's password: 

(process:18633): Gtk-WARNING **: 12:53:38.657: Locale not supported by C library.
	Using the fallback 'C' locale.
No protocol specified
Unable to init server: Could not connect: Connection refused

(galculator:18633): Gtk-WARNING **: 12:53:38.663: cannot open display: :0
niXman ★★★
() автор топика
Ответ на: комментарий от niXman

но в стартовом посте

на удаленной машине есть xserver, он запущен и работает как надо.

ну покажи команду запуска, или лучше сразу смотри в Xorg.log

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

в стартовом посте я говорил о том, что на удаленной машине установлено ПО xserver`а, потому что я могу запускать там тот же xterm, но логинюсь я на удаленную машину в этом случае не как root и не удаленно. (ну, т.е., у меня есть физический доступ к машине)

а вопрос мой в том, как запустить GUI прогу на удаленной машине, подключаясь по ssh как root.

niXman ★★★
() автор топика
Последнее исправление: niXman (всего исправлений: 3)
Ответ на: комментарий от Dispetcher14
root@rockpro64:~# DISPLAY=:0 galculator
No protocol specified
Unable to init server: Could not connect: Connection refused

(galculator:24301): Gtk-WARNING **: 13:08:06.098: cannot open display: :0
niXman ★★★
() автор топика
Ответ на: комментарий от Dispetcher14

я могу удаленно, на удаленной машине запустить GUI программу НЕ КАК root. значит все ок?

вопрос в том, почему я не могу этого сделать как root?

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

под каким пользователем запущены иксы, под тем и запускай команду. sudo или su в помощь

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

Не хочу добавлять предвзятости твоим наблюдениям, поэтому скажу, что не знаю. Проверь не удалённо, проверь не как рут, посмотри логи, ну.

Dispetcher14 ★★★★★
()

используй ssh -X или ssh -Y

ssh устанавливает на удаленной машине DISPLAY=:0 и пробрасывает на локальный X сервер

т.е. не надо указывать эту переменную - просто запускай свою программу

vyv ★★★
()

От рута делаешь su username и дальше обычное DISPLAY=:0 galculator. Если надо без su, то надо разрешить иксам подключение от рута (да, в иксах есть своя система доступа), опять же от пользователя иксов xhost local:root

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

ааа, понятно

на компе на котором запущен X сервер, должен быть открыт порт 6000/tcp в firewall

логика такая с открытыми портами:

для 0: - 6000 для 1: - 6001 и т.д.

далее X server должен быть запущен с параметром -listen tcp. По умолчанию опция -nolisten.

Далее либо X server должен быть запущен без аутенфикации - опция -ac либо добавить хост с которого идет соединение в список доверенных man xhost

далее запускаете приложение так: $ DISPLAY=<ip address>:0 xterm

xterm и номер экрана 0 для примера

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

Попробуй найти в домашнем каталоге пользователя(через которого все ок) файл настройки .x(что-то там) и скопируй его в домашний каталог рута

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

От рута делаешь su username и дальше обычное DISPLAY=:0 galculator.

но в этом случае программа будет запущена от имени юзера username, а надо от root

Если надо без su, то надо разрешить иксам подключение от рута (да, в иксах есть своя система доступа), опять же от пользователя иксов xhost local:root

а можно об этом по-подробнее? или это о том же, о чем ниже написал пользователь vyv?

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

на удаленном компе, насколько я понимаю, запущен lxdm. это имеет значение для описаного вами способа?

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

Куда подробнее то? Юзер разрешает ту командой руту пользоваться его иксами.

@vyv не в ту степь поехал, к иксам все давно подключаются через юникс-сокет, а не через tcp.

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

Читатель, но криво распарсил, потому-что не очень прямо сформулировано :)

Правильный вариант уже выше написали, с xhost.

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

Попробуй от балды DISPLAY=:0 HOME=/home/<юзер> <команда>

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