Пересилання X11 з Xming через SSH?


11

У мене доступ до SSH, і у мене встановлено Xming, поряд із шрифтами Xming. Я налаштував PuTTY для пересилання x11 і сказав йому розмістити робочий стіл у localhost: 0, відповідно до інструкцій тут .

Однак після входу в систему startxя отримую ... нічого. А точніше, він виконує купу повідомлень, які, як видається, говорять про те, що все працює, але я отримую курсор у вікні консолі, який діє так, ніби він знаходиться в стані очікування. І це все.

Що я пропускаю? Чи потрібно щось відкрити, щоб побачити робочий стіл?

Я хочу переслати робочий стіл на свій робочий ПК, щоб я міг грати з RasPi на обід, не підключаючи фізично обладнання. Будь ласка, допоможіть.

Редагувати:

Скріншот того, що відбувається з запуском Xming, і я ввімкнув і зателефонував startx:

SSH з реакцією Xming

EDIT 2:

Ця відповідь говорить, що startxце зайве, оскільки він запускає сервер RasPi X, і я використовую сервер Xming у Windows. У такому випадку як я можу потрапити на робочий стіл / GUI на Xming з Windows? Тому що, навіть під час роботи Xming та включення SSH, я не отримую нічого, крім звичайного запиту консолі. Можливо, я роблю це неправильно. Те, що я хочу, - це мій повний, звичайний графічний інтерфейс RasPi, який працює у вікні мого віддаленого ПК з Windows. Я не хочу використовувати VNC. Я пересилаю через Інтернет. Як мені дістатися?


2
Я також хотів запустити графічний сеанс від мого Raspberry до мого комп'ютера Windows. І коли я побачив ваше повідомлення про те, що startx означає запуск X-сервера, я зрозумів, що мені потрібно запустити програму X ... Тож давайте запустимо ... x-session-manager! таким чином, у вас є графічний сеанс на вашому віддаленому комп'ютері. дякую, ти мені дав дорогу!

Відповіді:


15

Якщо ви запускаєте Xming на своєму комп’ютері Windows, тоді у вас вже працює X-сервер. Вам не потрібно запускати X-сервер вашого Raspberry Pi, використовуючи startx. Ваші програми X запускатимуться на Raspberry Pi, але програма буде працювати на сервері Xming X Windows.

Документація, яку ви зв'язали , вказує, що ви повинні запустити X-сервер у Windows, і це не зазначає, що ви повинні запускати X-сервер у Linux. В останньому реченні документації:

Тепер ви маєте змогу запускати програми X від хоста на локальному робочому столі

"X додатки" стосуються не сервера X (який повинен бути запущений startx), а таких додатків, як xclock, xeyes тощо.

Одне спеціальне додаток X - це lxsession, яке запустить стандартний менеджер сеансів LXDE (принаймні, на моєму Raspbian). Запустивши цю програму на консолі, ви отримаєте "повний графічний інтерфейс", який ви шукаєте:

lxsession

Особисто мені не здається корисним починати lxsession, запуск програм X на консолі мені набагато простіше.


1
Добре. Це я можу зрозуміти, думаю. Ви говорите, що startx непотрібний, оскільки він запускає сервер RasPi x, і я використовую сервер Xming у Windows. У такому випадку, як мені дістатися до робочого столу / GUI на Xming з Windows. Тому що, навіть під час роботи Xming та включення SSH, я не отримую нічого, крім звичайного запиту консолі. Ви говорите, що я запускав би лише фактичну програму в xming, а не повний графічний інтерфейс. Можливо, я роблю це неправильно. Те, що я хочу, - це мій повний, звичайний графічний інтерфейс RasPi, який працює у вікні на моєму віддаленому ПК Windows. Я не хочу використовувати VNC. Я пересилаю через Інтернет.
zenbike

Оновлено відповідь.
asalamon74

Працює чудово, якщо (як і належить) реагувати трохи повільно. Дякую за твою допомогу.
zenbike

1
… І ось чому ваш путівник рекомендує одночасно запускати окремі програми над ssh…
Олександр - Відновіть Моніку

1
@ asalamon74 Дякую! Оце Так! це просто кикас. Мені не доводиться мати справу з клавіатурою і мишкою, підключеною до usb, з шалено коротким проводом. Я звик сидіти перед телевізором із вищевказаними налаштуваннями. ЗАРАЗ? Я просто ssh і запускаю gui як начальник !!
Dheeraj Bhaskar

1

Використання Cygwin / X

Якщо ви не прив'язані до Xming, ви можете замість цього використовувати Cygwin / X для запуску X-сервера в Windows.

Підготовка малини Пі

Спробуйте встановити звичайне SSH-з'єднання від Windows до Raspberry Pi за допомогою PowerShell:

Увійдіть до Raspberry Pi у Windows за допомогою PowerShell та SSH

Враховуючи, що Raspbian Buster включає X11Forwarding yesв себе /etc/ssh/sshd_config, ваш Raspberry Pi також повинен мати можливість пересилати візуальний вихід X11-програм на X-сервер під Windows.

Наступний крок показує, як встановити цей X-сервер.

Встановіть Cygwin / X у Windows

Cygwin / X надає X-сервер для Windows, який відображає програми GUI, що працюють на Raspberry Pi.

  1. Завантажити і запустити setup-x86_64.exeз веб - сайту Cygwin в .

  2. Для «Каталогу локальних пакетів» Cygwin ви можете використовувати C:\Users\me\AppData\Roaming\Cygwin.

  3. Виберіть поруч із вами сервер для завантаження пакетів.

  4. Встановіть "Вид" на "Повний" та знайдіть xinit.

  5. У стовпці "Нове" скористайтеся спадним меню, щоб змінити значення з "Пропустити" на xinitостанню версію:

Встановіть пакет xinit за допомогою Cygwin

  1. Встановіть пакет opensshтак само.

Підключіться до Raspberry Pi з Windows

  1. Запустіть сервер X з допомогою меню Пуск Windows ': Cygwin-X → XWin Server. Це не відкриє жодного вікна, але ви побачите дві нові іконки в системному треї:

Піктограми сервера XWin в системному треї

  1. Запустіть термінал Cygwin: Cygwin → Cygwin64 Terminal

  2. Встановіть DISPLAYзмінну середовища в те, де працює X-сервер у Windows:

    export DISPLAY=:0.0

  3. Підключіться до вашого Raspberry Pi за допомогою переадресації X11:

    ssh -Y pi@raspberrypi

Вхід з терміналом Cygwin

Всередині сеансу SSH тепер ви можете запустити X-програму на Raspberry Pi як Thonny :

Thonny перенаправлений до Windows

Крім того, як згадував user1297 у коментарях до запитання, ви можете запустити, x-session-managerщоб наслідувати досвід, який ви отримаєте під час підключення до Raspberry Pi через HDMI на зовнішньому моніторі:

Рабпійський робочий стіл передавався Windows

Якщо ви хочете запустити програму безпосередньо, не попередньо ввівши її ім'я в оболонці, скористайтеся цим:

ssh -Y pi@raspberrypi x-session-manager

На macOS

XQuartz надає X-сервер для macOS.

Встановіть XQuartz, вийдіть із системи та поверніться назад (щоб зробити нове значення DISPLAYефективним), а потім запустіть програми із SSH від Bash:

ssh -Y pi@raspberrypi thonny

Thonny всередині macOS за допомогою XQuartz


1

Якщо ви вже працюєте з X сервером у Windows (як і у Xming), то в основному сторона Windows (але див. Нижче кілька важливих деталей). Основний біт, що залишився - це повідомити додаткам X11 на пі, щоб вони надсилали свої дані X11 на ваш ПК з Windows.

Це робиться через DISPLAYзмінну середовища. Зазвичай, якщо X-сервер і додаток працюють на одному комп’ютері, DISPLAY просто вкаже номер сервера (наприклад, :0якщо ви працюєте лише на одному X-сервері) або, можливо, сервер і екран (наприклад :0.0). Оскільки IP-адреси немає, це повідомляє X бібліотеці додатків про те, що сервер локальний, і з'єднання будуть зроблені відповідно (можливо, хоч якийсь транспорт спільної пам'яті).

Щоб сказати додатку надсилати дані X11 на віддалений вузол, включіть IP-адресу в DISPLAYзмінну. Наприклад, export DISPLAY=192.168.1.10:0. Це скаже будь-яким програмам X11, що їм потрібно відкрити TCP-з'єднання до X-сервера № 0 на вузлі 192.168.1.10. Імена хостів DNS тут добре, якщо вони є у вашій мережі.

Дві потенційні проблеми

Як я писав у першому абзаці, просто запустити Xming може бути недостатньо. Можливо, потрібна додаткова конфігурація.

По-перше, ваш сервер X11 повинен бути налаштований для прийому з'єднань з віддалених вузлів через TCP. Багато X-серверів, що розповсюджуються сьогодні (я не знаю про Xming), приймають з'єднання лише з локально запущених програм, якщо ви явно не налаштуєте їх. Це функція безпеки, оскільки кожен відкритий сокет є потенційним вектором для нападу.

По-друге, ваш сервер X11 підтримує базу даних хостів / користувачів, яким дозволено підключатися. Вам потрібно додати в білий список IP-адресу Raspberry Pi. Це можна зробити, запустивши xhostкоманду з Xming в Windows, наприклад, з консолі, що працює в xterm. Ви також можете ввести, xhost +щоб вимкнути цю перевірку безпеки, але це небезпечно, оскільки це дозволить будь-якій програмі з будь-якої точки світу відкривати з'єднання з вашим дисплеєм. Якщо ви знаходитесь за брандмауером в локальній мережі, де ви довіряєте всім (наприклад, своєму власному дому), це найпростіший підхід, але потрібен час, щоб правильно налаштувати, xhostякщо ви цього не зробите.

Альтернатива: ssh -Y

Використовуючи вищезазначений підхід, ваші додатки X11 намагатимуться відкрити TCP-з'єднання до вашого X-сервера. Ці з'єднання не захищені. Хтось із ваших мережевих пакетів, що чують, може перехопити їх.

Щоб вирішити цю проблему, замість встановлення змінної DISPLAY на Raspberry pi, використовуйте -Yпараметр при підключенні до неї (наприклад slogin -Y hostname). Параметр -Y (як -X) створить тунель між вузлами для перевезення трафіку X11. Це дозволить зберегти трафік X11 зашифрованим та захищеним. Він також призначить власну змінну середовища DISPLAY, щоб додатки використовували тунель. Це також може усунути необхідність возитися, xhostоскільки (що стосується вашого X-сервера) з'єднання відбуваються локально (зі сторони тунелю SSH).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.