Вопрос или проблема
Экспортировать дисплей из Linux-терминала на Linux-десктоп легко; выполните следующее:
На 192.168.90.121 (localPC):
xhost + 192.168.10.164
На 192.168.10.164 (remotePC):
export DISPLAY=192.168.90.121:0.0 <br/>
firefox
Окно Firefox появляется на моем localPC. В приведенном выше случае оба компьютера работают на Linux.
Могу ли я аналогично экспортировать дисплей с Linux на компьютер с Windows? В приведенном выше примере localPC будет Windows, а remotePC — Linux.
Да, можете, если установите X сервер на свой компьютер с Windows. Существует несколько коммерческих вариантов (я некоторое время назад использовал Starnet X-Win32), а также пара открытых решений, например, Cygwin/X и XMing. Это не так просто, как Linux на Linux (или другой Unix-подобной системе, которая нативно использует X11), но результат вполне приемлемый и удобный.
Используйте Cygwin. Я использую Ubuntu в Docker-контейнере, но это будет работать и без контейнеризированной Ubuntu, то есть на полноценном Ubuntu-машине в той же локальной сети, что и машина с Windows.
Просто игнорируйте термин IP контейнера. IP хоста контейнера == IP машины Ubuntu.
IP хоста контейнера Ubuntu 192.168.1.20
Удаленная машина с Windows в той же локальной сети IP 192.168.1.4
В ssh контейнере Ubuntu: sudo vim /etc/ssh/sshd_config
:
X11UseLocalhost no
перезапустите ssh-сервер на Ubuntu
На удаленной машине с Windows, на которой запущен Cygwin X сервер:
-
Откройте Cygwin bash
-
cd /cygdrive
-
В bash
startx -- -listen tcp &
-
export DISPLAY=192.168.1.4:0.0
-
xhost + 192.168.1.20
-
На X term, который запущен командой в шаге 3, выполните то же самое, что и в шагах 4 и 5
-
На xterm
ssh -Y
-
Можно также использовать PuTTY. IP адрес хоста docker 192.168.1.20 и ssh порт 22
-
Включите перенаправление порта SSH —> X11, отметьте галочку для включения перенаправления порта. В той же вкладке используйте местоположение Display для удаленной машины с Windows 192.168.1.4:0.0, на которой удаленный контейнер Ubuntu будет отображать свое изображение
-
Нажмите подключиться, введите учетные данные и запустите X11-GUI, например, xeyes
-
На удаленной машине с Windows на 192.168.1.4:0.0 появятся два глаза, не используя дисплей Linux.
-
Таким образом, нет необходимости устанавливать отдельный полноценный X11 сервер на Ubuntu, оставляя контейнер легким
-
О да, для xeyes вам нужно установить некоторые x-11 GUI приложения,
sudo apt-get install x11-apps
. -
Убедитесь, что вы вводите
xeyes &
, чтобы не блокировать оболочку. -
На Xterm вы можете сделать то же самое, что и в PuTTY.
ssh -Y [email protected]
. Флаг-Y
необходим для доверенного перенаправления порта. После входа в систему введитеxeyes &
.
.
Ответ или решение
Экспорт отображения из терминала Linux на Windows ПК может быть сложной задачей, но с помощью установки X-сервера на Windows эту задачу можно успешно решить. Для начала необходимо понять, как работает система X11, которая отвечает за графический интерфейс в UNIX-подобных операционных системах, таких как Linux. X11 позволяет приложениям с графическим интерфейсом взаимодействовать с пользовательским дисплеем, и этот функционал можно перенаправить на удалённый ПК, что и является целью нашего задания.
Теория
X11 – это компонент в архитектуре UNIX-подобных систем, который предоставляет основу для графического интерфейса. Она составляет базу для запуска оконных менеджеров и графических оболочек. В случае экспорта отображения с одного компьютера на другой, X11 позволяет перенаправлять графический поток через сеть. Это особенно полезно, когда сервер и клиент находятся на разных физических машинах, и требуется отобразить графический интерфейс на клиентской стороне.
Чтобы перенаправить дисплей с Linux на Windows, ваш Windows компьютер должен иметь X-сервер, который может принимать графические команды и преобразовывать их в графический вывод на локальной машине. В Linux дисплей может быть передан удалённо через X11 протокол, и это осуществляется путём назначения переменной окружения DISPLAY соответствующего IP адреса с номером дисплея машины, на которую производится экспорт.
Пример
Для экспорта отображения с Ubuntu или другой Linux системы на Windows, вам потребуется установить X-сервер на Windows. Существует множество X-серверов, таких как:
-
Cygwin/X – это бесплатное и open-source программное обеспечение, которое позволяет запускать X-сервер на Windows. Оно предоставляет виртуальную Unix среду на платформе Windows, что делает его отличным выбором для данного приложения.
-
Xming – это ещё один популярный X-сервер для Windows, который лёгок в установке и использовании. Он обладает базовыми функциями X-сервера и хорошо подходит для большинства пользователей.
-
Starnet X-Win32 – это коммерческий продукт, который предлагает дополнительные функции и поддержку, что делает его подходящим для предприятий, где необходимы дополнительные возможности и техническая поддержка.
После установки X-сервера на Windows, он сможет получать графические данные с удалённой Linux машины, так как в Linux выполняется настройка перенаправления дисплея.
-
Установите X-сервер на Windows, например, Cygwin/X:
- Загрузите и установите Cygwin, в процессе убедитесь, что выбраны компоненты для X11.
- После установки запустите Cygwin, и внутри открытого окна введите команду
startxwin.exe
илиstartx
, чтобы запустить X-сервер.
-
На Linux машине убедитесь, что SSH сервер настроен для перенаправления X11. Отредактируйте файл
/etc/ssh/sshd_config
, чтобы установитьX11Forwarding yes
иX11UseLocalhost no
. Затем перезапустите SSH сервис командойsudo systemctl restart sshd
. -
На Windows в окне Cygwin введите команду для запуска графического интерфейса X11:
startx -- -listen tcp &
Это включит возможность принять входящие соединения для X-сервера.
-
С Windows машины используйте SSH клиент, например PuTTY, чтобы подключиться к Linux машине. В настройках SSH выберите "Connection" -> "SSH" -> "X11" и включите "Enable X11 forwarding". Укажите
X display location
какlocalhost:0
. -
Завершите подключение, введя адрес и логин для Linux машины.
-
После успешного входа на Linux, вы сможете запускать любые графические приложения, например, xeyes:
xeyes &
Приложение откроется на Windows экран.
Применение
Экспорт дисплея с Linux на Windows полезен в случае, когда важно работать с графическими интерфейсами на удалённых машинах без необходимости физически находиться рядом с ними. Это особенно актуально для системных администраторов и разработчиков, которым необходимо взаимодействовать с серверным окружением непременно через графический интерфейс. Таким образом, сконфигурированный X-сервер на Windows значительно упрощает данную задачу, предоставляя доступ к удалённым графическим средам без значительных усилий и потерь времени.
Важно соблюдать все шаги при настройке и убедиться, что сеть между двумя машинами стабильна, так как это напрямую влияет на производительность и корректность отображения экспортируемого интерфейса.
Эта методология позволяет пользователям эффективно взаимодействовать с удалёнными графическими приложениями на Linux, работая с Windows интерфейсом, тем самым расширяя возможности использования рабочего окружения и продуктивности сотрудников.