SSH: запуск программ с графическим интерфейсом на удаленном экране, а не на дисплее X

11

Эта проблема

Большинство людей хотят подключиться к серверу через ssh с опцией «-X», чтобы запускать программы с графическим интерфейсом на удаленном хосте, используя отображение клиента. Я хотел бы запускать программы с графическим интерфейсом на физическом мониторе, подключенном к серверу. Это возможно ? Позвольте мне быть более конкретным:

Моя ситуация следующая: у меня есть рабочая станция без клавиатуры или мыши, но к ней подключен монитор. Я хотел бы подключиться к SSH на своем ноутбуке и иметь возможность запускать графические программы, такие как xeyes или ssvnc, и отображать их на мониторе рабочей станции.

[xapple@laptop ~]$ ssh workstation
Last login: Mon Sep 26 20:03:35 2011 from laptop
[xapple@workstation ~]$ export DISPLAY=:0
[xapple@workstation ~]$ xeyes
No protocol specified
Error: Can't open display: :0

Редактировать: дополнительная информация

Возможно, мне следует объяснить несколько вещей более четко:

  • У меня есть доступ sudo на рабочей станции, я могу установить все, что нужно.
  • Рабочая станция работает под управлением пользовательского интерфейса GNOME.
  • Прежде чем отключить клавиатуру и мышь от рабочей станции, я вошел в сеанс GNOME. Поэтому можно видеть мой рабочий стол GNOME на мониторе рабочей станции.
  • Я не хочу запускать программы с моего ноутбука на рабочей станции. Я хотел бы запускать программы для рабочих станций на рабочей станции. Xeyes или любой исполняемый файл найден на удаленном сервере и должен быть запущен на мониторе удаленного сервера
  • Я понимаю, что выполнение этого оставит меня в ситуации, когда мой курсор не будет подключен к интерфейсу. Я не могу нажимать на вещи. Ничего страшного.

Любая помощь с благодарностью!

xApple
источник
Вы казнили xhost +на своем сервере?
karlphillip
Я думаю, что это также интересный вопрос, например, если у вас 3 компьютера с Ubuntu, на которых работает Synergy, чтобы использовать одну и ту же клавиатуру и мышь между 3 ... при входе в систему вы должны войти в систему 3 раза. было бы неплохо создать сценарий, который регистрирует вас на двух других компьютерах, когда вы входите на основной компьютер.
Сверре

Ответы:

5

любое xlib-приложение должно подключаться к xserver. Вы должны сообщить приложению о подключении к серверу:

  • установка переменной среды DISPLAY
  • используя флаг командной строки, такой как -display

первый xserver обычно может быть достигнут через строку соединения ': 0'. Итак, попробуйте это:

xeyes -display :0

или это

env DISPLAY=:0 xeyes
Акира
источник
Во многих случаях (например, когда GDM запускает GNOME) также XAUTHORITYпотребуется настройка , так как сервер X11 будет использовать временный файл Xauthority.
user1686
Интересно, что после установки переменной $ DISPLAY я теперь, в дополнение к сообщению «Ошибка: не удается открыть дисплей», получаю сообщение «Протокол не указан» при попытке запустить xeyes.
xApple
@ grawity Спасибо за совет. Могу ли я спросить, как бы я установил свой XAUTHORITY, чтобы моя команда работала?
xApple
5

На этой рабочей станции работает сервер X Windows? Без этого, это все спорно.

Вам нужно что-то, чтобы обработать данные в графику, пиксели, цвета и местоположения. «Монитор» бесполезен без какого-либо программного обеспечения для его запуска.

Предполагая, что это так. (но из текста, конечно, звучит иначе)

Учитывая имена хостов (и соответствующее разрешение DNS через / etc / hosts или DNS или что-то еще) для «рабочей станции» и «ноутбука» ... если нет, замените имена хостов машины соответствующими IP-адресами.

ssh workstation
xhost +laptop

Затем вы можете выйти из рабочей станции на этом этапе, так как это устанавливает разрешения на Xserver рабочей станции для подключения «ноутбука».

если вы запустите свои программы с соответствующей настройкой DISPLAY env var, вы можете заставить приложения отображаться на рабочей станции во время работы на вашем ноутбуке.

DISPLAY=workstation:0 xeyes

-или-

export DISPLAY=workstation:0
xeyes

любой метод будет работать, последний заставляет все, что связано с X11, отображаться на рабочей станции при запуске из этой оболочки. (надеюсь, что это имело смысл)

Строка 'xhost' позволяет разрешить ноутбуку подключаться к Xserver рабочей станции. Без этого вы получите отказ в разрешении, если только вы не запустите X-сервер без разрешений, что на самом деле не рекомендуется. Защита «xhost» по-прежнему неэффективна, поскольку данные передаются в виде обычного текста между ноутбуком и рабочей станцией и могут быть перехвачены, но это простое решение.

Если вам нужна конфиденциальность, вам нужно установить какой-то зашифрованный туннель между вашим ноутбуком и рабочей станцией (порт 6000 для отображения: 0). Да, это становится странным в этой точке.

Если вы находитесь в контролируемой среде, то использования команды «xhost + laptop» будет достаточно, если вы выйдете из части «laptop» этой команды «xhost +», тогда ЛЮБОЙ сможет подключиться к Xserver и отобразить информацию.

Помните, что ваша мышь НЕ «подключена» к рабочей станции Xserver, и вы НЕ сможете манипулировать окнами или щелкать мышью.

Если вы хотите, чтобы мышь была подключена, я бы порекомендовал что-то вроде x2x, synergy, vnc или приложения для разделения экрана на основе X Windows.

lornix
источник
Спасибо за Ваш ответ ! Вы правы, возможно, мне нужно указать еще кое-что: (1) Рабочая станция работает с пользовательским интерфейсом GNOME (2) Я не хочу запускать программы с моего ноутбука. Xeyes или что-то еще должно быть запущено на рабочей станции с монитором рабочей станции (3) Это нормально, я понимаю, что мой курсор не будет подключен.
xApple
О, тогда вам действительно нужно только ssh на рабочую станцию, установить переменную DISPLAY в значение 'localhost: 0' (или просто ': 0') и запустить ваше приложение. Вам все равно придется иметь дело с разрешениями (xhost + localhost, вероятно, лучший ответ) и nohup, или &! (background and disown) или команды bg / disown из оболочки, чтобы приложение не закрывалось при выходе из системы. (если, конечно, это не то, что вы хотите)
lornix,
Ах, может быть, моя проблема только проблема с разрешением. Хотя, если я запускаю «xeyes» от имени root, сообщение об ошибке остается тем же. Если вы разместите ответ, который решает проблемы с разрешениями, я могу пометить его как решенный!
xApple
Кто-нибудь вошел в сеанс X Windows на рабочей станции? Без этого код, который прослушивает программные соединения, еще не активен, только вход в систему. (Я сильно упрощаю!) Попробуйте ssh'ing на рабочую станцию, затем «startx», ПОТОМ вы сможете подключиться к дисплею. Другой способ - это использовать X-сервер без кода, набрав «X: 0 &», установив переменную DISPLAY, а затем выполнив «xhost + laptop» (или просто «xhost +»). Но это становится немного низким уровнем для большинства. (Отлично
подходит
Да, я вошел в сеанс GNOME на рабочей станции, прежде чем отключить клавиатуру и мышь. Тем не менее я попытался выполнить команду "startx" из моего сеанса SSH. Сообщение об ошибке было следующим: «X: пользователь не авторизован для запуска X-сервера, прерывание».
xApple