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

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

2 ответа2

3

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

  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 на удаленный компьютер). Также посмотрите это руководство - там есть несколько скриншотов.

1

Windows не поддерживает протокол X Я хотел бы найти что-то, что говорит Windows RDP (протокол удаленного рабочего стола). Примером, не проверенным лично, может быть rdesktop.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .