У меня есть доступ по SSH, и у меня установлен Xming вместе со шрифтами Xming. Я настроил PuTTY для пересылки x11 и приказал разместить рабочий стол по адресу localhost: 0, согласно инструкциям здесь .
Тем не менее, после того, как я вхожу, и startx
я получаю ... ничего. Или, скорее, он запускает кучу сообщений, в которых говорится, что все работает, но в окне консоли появляется курсор, который работает так, как будто он находится в состоянии ожидания. Вот и все.
Что мне не хватает? Нужно ли что-то открывать, чтобы увидеть рабочий стол?
Я хочу переслать свой рабочий стол на свой рабочий ПК, чтобы я мог поиграть с RasPi во время обеда без физического подключения к оборудованию. Пожалуйста помоги.
РЕДАКТИРОВАТЬ:
Снимок экрана, показывающий, что происходит с Xming, и я запускаю SSH и вызываю startx
:
РЕДАКТИРОВАТЬ 2:
Этот ответ говорит startx
, что нет необходимости, потому что он запускает X-сервер RasPi, а я использую сервер Xming в Windows. В таком случае, как мне попасть на рабочий стол / графический интерфейс пользователя на Xming из Windows? Потому что даже при работающем Xming и включенном SSH я не получаю ничего, кроме обычной консоли. Возможно я делаю это неправильно. Я хочу, чтобы мой полный, нормальный графический интерфейс RasPi работал в окне на моем удаленном ПК с Windows. Я не хочу использовать VNC. Я пересылаю через Интернет. Как туда попасть?
Ответы:
Если вы запустите Xming на своем компьютере с Windows, значит, у вас уже работает X-сервер. Вам не нужно запускать X-сервер вашего Raspberry Pi, используя
startx
. Ваши X-приложения будут работать на Raspberry Pi, но приложение будет работать на X-сервере Windows Xming.В документации, на которую вы ссылаетесь , говорится, что вы должны запустить X-сервер в Windows, и в нем не упоминается, что вы должны запускать X-сервер в Linux. В последнем предложении документации:
«X-приложения» относятся не к X-серверу (который должен быть запущен
startx
), а к таким приложениям, как xclock, xeyes и т. Д.Одно специальное X-приложение - это lxsession, которое запускает стандартный менеджер сессий LXDE (по крайней мере, на моем Raspbian). Запуск этого приложения на консоли даст вам «полный графический интерфейс», который вы ищете:
Лично я не считаю полезным начинать
lxsession
, запуск приложений X на консоли намного проще для меня.источник
Использование Cygwin / X
Если вы не привязаны к Xming, вы можете вместо этого использовать Cygwin / X для запуска X-сервера в Windows.
Готовим Raspberry Pi
Попробуйте установить обычное SSH-соединение от Windows к Raspberry Pi с помощью PowerShell:
Учитывая , что Raspbian Buster включает
X11Forwarding yes
в/etc/ssh/sshd_config
, ваш Raspberry Pi также должен быть в состоянии направить визуальный вывод приложений X11 на X - сервер на Windows.Следующий шаг показывает, как установить этот X-сервер.
Установите Cygwin / X в Windows
Cygwin / X предоставляет X-сервер для Windows, который отображает приложения с графическим интерфейсом, запущенные на Raspberry Pi.
Скачайте и запустите
setup-x86_64.exe
с сайта Cygwin .Для Cygwin "Local Package Directory" вы можете использовать
C:\Users\me\AppData\Roaming\Cygwin
.Выберите сервер рядом с вами для загрузки пакетов.
Установите «Вид» на «Полный» и выполните поиск
xinit
.В столбце «Новый» используйте раскрывающееся меню, чтобы изменить значение с «Пропустить» на
xinit
последнюю версию:openssh
таким же образом.Подключиться к Raspberry Pi из Windows
Cygwin-X → XWin Server
. Это не откроет никаких окон, но вы должны увидеть два новых значка в системном трее:Запустите терминал Cygwin:
Cygwin → Cygwin64 Terminal
Задайте для
DISPLAY
переменной среды, где работает X-сервер в Windows:export DISPLAY=:0.0
Подключитесь к вашему Raspberry Pi с переадресацией X11:
ssh -Y pi@raspberrypi
Внутри сеанса SSH вы можете запустить приложение X на Raspberry Pi, например, Thonny :
В качестве альтернативы, как user1297 упомянул в комментариях вопроса, вы можете запустить,
x-session-manager
чтобы имитировать опыт, который вы получите при подключении к Raspberry Pi через HDMI на внешнем мониторе:Если вы хотите запустить приложение напрямую, не вводя его имя в оболочке, используйте это:
На macOS
XQuartz предоставляет X-сервер для MacOS.
Установите XQuartz, выйдите из системы и снова войдите в нее (чтобы новое значение вступило в
DISPLAY
силу), затем запустите приложения с SSH из Bash:источник
Если вы уже используете 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).источник