Raspberry pi 3 * reverse * удаленный рабочий стол

У меня есть локальная машина (A) и малина PI 3 (B).
B подключен монитор HDMI и работает под управлением ОС Raspbian.

Я хочу запустить приложение X на A – скажем, презентацию Libre Office Impress, которая у меня есть на A, и иметь ее видимую (отображаться) на экране, подключенном к B.
Я хочу сделать это перед машиной:

  • не от ssh -X to_A от B,
  • ни с помощью VNC от B, чтобы получить выход из A

Я не ищу:

  • Запуск X-приложения на B с использованием ssh из A и его вывод, отображаемый на A (это можно сделать либо через from_a $ ssh -X machine_B либо rdp / remmina / vnc-клиенты)
  • Запуск приложения X на B с использованием ssh из A и его вывод, отображаемый на B (это можно сделать либо путем экспорта отображения в ssh, либо с надлежащей конфигурации xhost, например from_a $ ssh machine_b from -> at_a_but_sshed_onto_b $ xhost + && export DISPLAY=:0 xeyes )
  • решение, требующее прямого физического доступа к B

То, что я пробовал, было setup (B), чтобы запускать удаленные элементы X … если я ничего не забыл – поскольку nmap -p6000 machine_B вернул, что этот порт закрыт и работает (из командной строки A):

 A_machine $ env DISPLAY=B_machine:0 xeyes 

где B_machine установлен в /etc/hosts а также ~/.ssh/config терпит неудачу.

Я подозреваю, что я полностью не согласен с копированием X11 magic_cookies из .Xauthority … но, возможно, этот шаг не нужен, и есть более простой способ?

Изменить: в ответ на вопрос @Rostislav Kandilarov – казалось бы, Lightdm запускает X-сервер, но скоро я смогу проверить его в понедельник, а также проверить, начинается ли он с --nolisten tcp .

2 Solutions collect form web for “Raspberry pi 3 * reverse * удаленный рабочий стол”

(Отредактированный, старый ответ ниже)

С дополнительным требованием, что вы хотите сделать все это от A, не касаясь B, проблема с запуском X-сервера на B и подключение к нему с приложением в A заключается в том, что этот X-сервер будет использовать только устройства ввода (клавиатура, мышь ), подключенного к B. Поэтому для использования вашего приложения вам придется использовать эти устройства ввода, которые вам не нужны.

В принципе вы можете попытаться разделить устройства ввода от A, но тогда строительство действительно начнет получать byzantine …

Так что VNC намного проще в этой ситуации.

Настройте vnc4server на A. Этот сервер также будет действовать как X-сервер для приложений на A. Запустите xvnc4viewer на A и используйте его для запуска и управления вашим приложением. Запустите еще один vncviewer на B и подключите его к серверу на A, он отобразит приложение. Это может быть так же просто, как directvnc (использовать фреймбуфер RaspPi напрямую, без дополнительного обхода по X, чтобы уменьшить рабочую нагрузку для RaspPi), или если вы хотите продолжать работу с существующим X-сервером на B, anth xvnc4viewer .


Самый простой способ – использовать удаленный рабочий стол, такой как VNC , который, скорее всего, уже доступен как пакет в вашем дистрибутиве. Это работает намного лучше, чем X пересылка через ssh или иначе, потому что он намного лучше сжат и не использует X примитивов на проводе.

Конечно, есть несколько способов настроить X переадресацию, через ssh или напрямую. Например, вы можете выполнить вход через ssh -X из B в A, запустить приложение на A и отобразить вывод на B. (Вы исключили обратное направление, но ничего не сказали об этом, m не совсем уверен, если вы этого хотите).

Вы также можете настроить X-сервер для удаленного сеанса через XDMCP . Или сделайте одно приложение, используя удаленный X-сервер, используя правильные xauth и DISPLAY .

Но я по-прежнему рекомендую сначала попробовать VNC.

Поэтому, если вы используете Raspbian OS на (B), если вы не сделали никакой конкретной настройки, как вы подозревали, что, вероятно, используете lightdm.

Наверняка вам нужно сказать lightdm, чтобы заставить X-сервер прослушивать tcp (порт 6000). Вы делаете это, установив xserver-allow-tcp=true в файле conf в глобальном разделе [Seat:*] . Вам также может потребоваться явно указать xserver-command=X -listen tcp (посмотрите здесь ). Это ваш выбор между любым дополнительным файлом в /etc/lightdm/lightdm.conf.d/*.conf или непосредственно в /etc/lightdm/lightdm.conf .

Затем, если вам xhost + для безопасности, вам, вероятно, также потребуется запустить (B) некоторую форму команды xhost + например xhost + IP_OF_(A) . Если вам небезразличны уязвимости в локальной сети, вы не должны использовать непосредственно X поверх tcp на первом месте, но без ssh вы можете придать жесткость жесткости, используя MIT-MAGIC-COOKIE между (A) и (B), запустив (B) xauth extract - $DISPLAY | ssh (A) xauth merge - xauth extract - $DISPLAY | ssh (A) xauth merge - .

Затем перезапустите Lightdm service lightdm restart или systemctl restart lightdm.service зависимости от версии вашей ОС.

Last – проверьте (B), если Xorg прослушивает 6000 netstat -antp | grep -F 6000 netstat -antp | grep -F 6000

Linux и Unix - лучшая ОС в мире.