X11
Если вы запускаете сервер X11 на компьютере с Windows (например, Cygwin/X
или Xming
), то связь довольно проста, так как система X Window была разработана для обеспечения прозрачности сети. Главное, к чему мы прикасаемся - это приложение, которое может быть выполнено и отображено на разных машинах. Вы запускаете приложение локально, но указываете дисплей, где приложение отображается.
В вашем случае окно Windows (скажем, 192.168.1.10
) запускает приложение, а окно Linux (например, 192.168.1.11
) отображает приложение. На самом деле, Windows-машине не требуется запускать X-сервер для запуска приложения - он просто может отобразить его на удаленном компьютере с Linux:
$ DISPLAY="192.168.1.11:0" xterm
Когда вы запускаете команду на компьютере с Windows, она будет запускать xterm
локально, но отображать ее на удаленном X-сервере, который работает на отдельной машине. Когда вы запускаете команду на компьютере с Windows, вы должны увидеть окно терминала, открытое на компьютере с Linux (удаленно).
DISPLAY
- это переменная окружения, которая содержит адрес и номер текущего дисплея. Каждое X-приложение просматривает эту переменную, чтобы узнать, где ее визуализировать. Важно понимать, что xterm
(например) не различает, отображается ли он на локальном X-сервере или удаленном X-сервере. Это прозрачная сеть . Например, если вы запускаете xterm
и просто говорите:
$ echo $DISPLAY
Он напечатает текущий DISPLAY
на котором отображаются все приложения. Переопределяя эту переменную, вы указываете приложению отображать себя в другом месте. Я надеюсь, что концепция ясна сейчас.
Обратите внимание, что, скорее всего, ваш Linux X Server отклоняет все входящие соединения по соображениям безопасности. Чтобы разрешить соединения из вашего окна Windows, выполните следующую команду:
$ xhost +192.168.1.10
На самом деле этот способ немного небезопасен, потому что каждый, кто назначает этот IP-адрес себе, может подключиться к X-серверу.
К счастью, есть отличный и безопасный способ. Поскольку X-сервер просто прослушивает порт TCP - мы можем переслать его на локальный компьютер по зашифрованному каналу, используя ssh
который обладает этой замечательной функцией. Вам понадобится демон ssh, работающий на компьютере с Windows. Вы можете использовать openssh
из cygwin
- это просто, просто настройте cygwin
выбрав пакет openssh
, а затем откройте терминал и запустите ssh-host-config
, но не забудьте установить X11Forwarding yes
в sshd_config
.
Теперь как это выглядит. В окне Linux вы запускаете:
$ ssh -X user@192.168.1.10 xterm
И после ввода пароля вы должны увидеть окно xterm
которое выполняется на машине с Windows, но отображается на машине с Linux. После авторизации ssh
связывается с портом на машине с Windows, где он прослушивает соединения и пересылает пакеты по установленному каналу на локальный порт на машине с Linux (обычно 6000 для отображения 0). Затем он запускает xterm
с установкой DISPLAY
на связанный порт, что позволяет xterm
отображать себя на удаленном X-сервере по зашифрованному каналу. В этом случае вам не нужно запускать xhost
поскольку X-серверу не нужно принимать какие-либо внешние подключения.
Теперь, как запустить приложение на компьютере с Linux и отобразить его на компьютере с Windows:
На компьютере с Windows вам потребуется X-сервер (например, Xming
) и клиент SSH (например, PuTTY
). Во-первых, убедитесь, что Xming
запущен (есть иконка в трее). Затем откройте PuTTY
, выберите ssh
, заполните поля login
и password
, а также убедитесь, что X11 Forwarding
в настройках SSH
установлен. Затем просто нажмите кнопку « connect
после чего он подключится к Linux-системе с открытием окна терминала. Вы можете запустить xterm
там, и он будет отображаться на локальном сервере Xming
(так как он пересылается PuTTY
на удаленный компьютер). Также посмотрите это руководство - там есть несколько скриншотов.