X Window Сервер Windows для Linux
В Интернете есть много руководств, в которых показано, как подключиться из Windows к Linux и получить окно сеанса X, но не указано иное. Это моя задача: как просматривать программы Linux для Windows с протоколом X [сервер X Window]?
Извините за мой плохой английский...
2 ответа
Есть несколько способов:
VNC
- Установите VNC-сервер на компьютере с Windows. Вы можете использовать TightVNC, например. Убедитесь, что вы настроили его на прослушивание IP-адреса без обратной связи, и он не заблокирован брандмауэром.
Установите клиент VNC на компьютере с Linux. Если вы используете Debian или Ubuntu, вы можете сделать это с помощью следующей команды в терминале:
$ sudo apt-get install xtightvncviewer
Подключитесь к коробке с Windows (предположим, что IP-адрес компьютера с Windows
192.168.1.10
):$ xtightvncviewer 192.168.1.10
RDP
Стандартный протокол удаленного рабочего стола Windows. Обычно это не требует какой-либо специальной настройки на стороне Windows, кроме настройки
Allow users to connect remotely to this computer
флажок вSystem Properties
и добавление пользователя вRemote Desktop Users
группа.На стороне Linux вы должны:
Установите
rdesktop
клиент. Для Ubuntu или Debian вы можете использовать следующую команду:$ sudo apt-get install rdesktop
Подключитесь к машине с Windows (предположим, что ее IP-адрес
192.168.1.10
):$ rdesktop 192.168.1.10
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
на удаленную машину). Также посмотрите это руководство - там есть несколько скриншотов.
Windows не поддерживает протокол X Я хотел бы найти что-то, что говорит Windows RDP (протокол удаленного рабочего стола). Примером, не проверенным лично, может быть rdesktop.