Пересылка X11 с Xming через SSH?

11

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

Тем не менее, после того, как я вхожу, и startxя получаю ... ничего. Или, скорее, он запускает кучу сообщений, в которых говорится, что все работает, но в окне консоли появляется курсор, который работает так, как будто он находится в состоянии ожидания. Вот и все.

Что мне не хватает? Нужно ли что-то открывать, чтобы увидеть рабочий стол?

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

РЕДАКТИРОВАТЬ:

Снимок экрана, показывающий, что происходит с Xming, и я запускаю SSH и вызываю startx:

SSH с ответом Xming

РЕДАКТИРОВАТЬ 2:

Этот ответ говорит startx, что нет необходимости, потому что он запускает X-сервер RasPi, а я использую сервер Xming в Windows. В таком случае, как мне попасть на рабочий стол / графический интерфейс пользователя на Xming из Windows? Потому что даже при работающем Xming и включенном SSH я не получаю ничего, кроме обычной консоли. Возможно я делаю это неправильно. Я хочу, чтобы мой полный, нормальный графический интерфейс RasPi работал в окне на моем удаленном ПК с Windows. Я не хочу использовать VNC. Я пересылаю через Интернет. Как туда попасть?

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

Ответы:

15

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

В документации, на которую вы ссылаетесь , говорится, что вы должны запустить X-сервер в Windows, и в нем не упоминается, что вы должны запускать X-сервер в Linux. В последнем предложении документации:

Теперь вы сможете запускать X-приложения с хоста на локальном рабочем столе.

«X-приложения» относятся не к X-серверу (который должен быть запущен startx), а к таким приложениям, как xclock, xeyes и т. Д.

Одно специальное X-приложение - это lxsession, которое запускает стандартный менеджер сессий LXDE (по крайней мере, на моем Raspbian). Запуск этого приложения на консоли даст вам «полный графический интерфейс», который вы ищете:

lxsession

Лично я не считаю полезным начинать lxsession, запуск приложений X на консоли намного проще для меня.

asalamon74
источник
1
ОК. Это я могу понять, я думаю. Вы говорите, что startx не нужен, потому что он запускает сервер RasPi x, а я использую сервер Xming в Windows. В таком случае, как мне попасть на рабочий стол / GUI на Xming из windows. Потому что даже при работающем Xming и включенном SSH я не получаю ничего, кроме обычной консоли. Вы говорите, что я буду запускать только приложение в xming, а не полный графический интерфейс. Возможно я делаю это неправильно. Я хочу, чтобы мой полный, нормальный графический интерфейс RasPi работал в окне на моем удаленном компьютере с Windows. Я не хочу использовать VNC. Я пересылаю через Интернет.
zenbike
Обновил ответ.
asalamon74
Работает отлично, если (как и ожидалось) немного медленно реагирует. Спасибо за помощь.
zenbike
1
... И по этой причине ваш гид рекомендует запускать отдельные приложения поверх ssh одновременно ...
Александр - Восстановите Монику
1
@ asalamon74 Спасибо! Вот это да! это просто офигенно Мне не приходится иметь дело с клавиатурой и мышью, подключенной к USB с помощью безумно короткого провода. Я имел обыкновение сидеть перед телевизором с вышеупомянутой установкой. ТЕПЕРЬ? Я просто ssh и запускаю графический интерфейс как босс !!
Дирадж Бхаскар
1

Использование Cygwin / X

Если вы не привязаны к Xming, вы можете вместо этого использовать Cygwin / X для запуска X-сервера в Windows.

Готовим Raspberry Pi

Попробуйте установить обычное 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, который отображает приложения с графическим интерфейсом, запущенные на Raspberry Pi.

  1. Скачайте и запустите setup-x86_64.exeс сайта Cygwin .

  2. Для Cygwin "Local Package Directory" вы можете использовать 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 :

Тонни перенаправлен в Windows

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

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

Если вы хотите запустить приложение напрямую, не вводя его имя в оболочке, используйте это:

ssh -Y pi@raspberrypi x-session-manager

На macOS

XQuartz предоставляет X-сервер для MacOS.

Установите XQuartz, выйдите из системы и снова войдите в нее (чтобы новое значение вступило в DISPLAYсилу), затем запустите приложения с SSH из Bash:

ssh -Y pi@raspberrypi thonny

Тони внутри macOS с использованием XQuartz

Матиас Браун
источник
1

Если вы уже используете X-сервер в Windows (как и в Xming), то сторона Windows в основном сделана (но некоторые важные детали приведены ниже). Оставшийся ключевой бит - сказать приложениям X11 на ПИ отправлять свои данные X11 на ваш ПК с Windows.

Это делается с помощью DISPLAYпеременной среды. Обычно, если X-сервер и приложение работают на одном компьютере, DISPLAY просто указывает номер сервера (например, :0если вы используете только один X-сервер) или, возможно, сервер и экран (например :0.0). Поскольку IP-адрес отсутствует, это говорит библиотеке приложений X о том, что сервер является локальным, и соединения будут устанавливаться соответствующим образом (вероятно, через какой-то вид транспорта с общей памятью).

Чтобы указать приложению отправлять данные X11 на удаленный узел, включите в DISPLAYпеременную IP-адрес . Например, 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).

Дэвид С.
источник