SSH: запускайте програми GUI на віддалений екран, а не на X-дисплей


11

Проблема

Більшість людей хочуть підключитися до сервера через ssh за допомогою параметра "-X", щоб запустити програми GUI на віддаленому хості за допомогою відображення клієнта. Я хотів би запускати програми GUI на фізичному моніторі, підключеному до сервера. Чи можливо це? Дозвольте мені бути більш конкретним:

Моя ситуація така: у мене робоча станція без клавіатури чи миші, але до неї підключений монітор. Я хотів би 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 або будь-який інший виконуваний файл знаходиться на віддаленому сервері і повинен працювати на моніторі віддаленого сервера
  • Я розумію, що виконавши це, я вийду із ситуації, коли мій курсор не буде підключений до інтерфейсу. Я не можу натискати на речі. Все добре.

Будь-яка допомога дуже вдячна!


Ви виконали xhost +на своєму сервері?
karlphillip

Я думаю, що це також цікаве питання, наприклад, якщо у вас є 3 комп'ютери ubuntu, на яких працює Synergy, щоб використовувати одну і ту ж клавіатуру та мишу між 3 ... під час входу ви повинні увійти 3 рази. було б непогано зробити сценарій, який увійде в систему на інших двох ПК, коли ви входите в основний ПК.
Сверре

Відповіді:


5

будь-яка програма xlib повинна підключитися до xserver. ви повинні повідомити програмі про з'єднання із сервером:

  • встановлення змінної середовища DISPLAY
  • використовуючи прапор командного рядка, такий як -display

до першого xserver зазвичай можна досягти рядком з'єднання ': 0'. тож спробуйте це:

xeyes -display :0

або це

env DISPLAY=:0 xeyes

У багатьох випадках (наприклад, коли запускається GDOME) GNOME XAUTHORITYтакож знадобиться налаштування , оскільки сервер X11 використовує тимчасовий файл Xauthority.
користувач1686

Цікаво, що після встановлення змінної $ 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-сервер без дозволів NO, що не рекомендується. Захист "xhost" все ще кульгає, оскільки дані надсилаються "звичайним текстом" між ноутбуком та робочою станцією, і їх можна нюхати, але це просте рішення.

Якщо ви хотіли конфіденційності, вам потрібно встановити якийсь зашифрований тунель між вашим ноутбуком та робочою станцією (порт 6000 для відображення: 0). Так, це стає дивно в цьому пункті.

Якщо ви перебуваєте в контрольованому середовищі, то використання команди "xhost + ноутбук" буде достатньою, якщо ви залишите частину "ноутбука" цієї команди "xhost +", то будь-хто може підключитися до Xserver і відобразити речі.

Пам'ятайте, що ваша миша НЕ "підключена" до робочої станції Xserver, і ви НЕ зможете маніпулювати вікнами або натискати на речі.

Якщо ви хочете, щоб миша була підключена, я рекомендую щось на зразок x2x, synergy, vnc або додаток для обміну екраном на базі X Windows.


Дякую за вашу відповідь ! Ви маєте рацію, можливо, мені потрібно вказати ще деякі речі: (1) Робоча станція працює з користувальницьким інтерфейсом GNOME (2) Я не хочу запускати програми зі свого ноутбука. Xeyes або що завгодно слід запустити на робочій станції за допомогою монітора робочої станції (3) Це нормально, я розумію, що мій курсор не буде підключений.
xApple

О, тоді вам потрібно лише перейти на робочу станцію, встановити змінну DISPLAY на "localhost: 0" (або просто ": 0") та запустити додаток. Вам все одно доведеться мати дозволи (xhost + localhost, мабуть, найкраща відповідь) і nohup, або &! (фон і відключення) або bg / disown команди з оболонки, щоб додаток не виходило під час виходу. (якщо, звичайно, це не хочеться)
lornix

Так, можливо, моя проблема - лише проблема дозволу. Хоча, якщо я запускаю "xeyes" як root, повідомлення про помилку - те саме. Якщо ви опублікуєте відповідь, яка вирішує проблеми з дозволом, я можу позначити її як вирішену!
xApple

Хтось увійшов у сеанс X windows на робочій станції? Без цього код, який прослуховує підключення до програми, ще не активний, лише вхід у систему. (Я дуже спрощую!) Спробуйте ssh'ing на робочу станцію, а потім 'startx', ТОМУ ви зможете підключитися до дисплея. Інший спосіб - використовувати сервер X з голими кістками, набравши "X: 0 &", встановити змінну DISPLAY, а потім виконати "xhost + ноутбук" (або просто "xhost +"). Але це для більшості стає трохи низьким. (
Чудово

Так, я ввійшов у сеанс GNOME на робочій станції перед відключенням клавіатури та миші. Тим більше я спробував виконати команду "startx" з мого сеансу ssh. Повідомлення про помилку було таким: "X: користувач не має права запускати X-сервер, роблячи переривання."
xApple
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.