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.