X Window Сервер Windows для Linux

В Интернете есть много руководств, в которых показано, как подключиться из Windows к Linux и получить окно сеанса X, но не указано иное. Это моя задача: как просматривать программы Linux для Windows с протоколом X [сервер X Window]?

Извините за мой плохой английский...

2 ответа

Решение

Есть несколько способов:

  1. 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
      
  2. 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
      
  3. 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.

Другие вопросы по тегам