Использование Xming X Window Server через VPN

У меня на ноутбуке под управлением Windows XP установлен сервер Xming X Window Server для подключения к некоторым серверам разработки UNIX.

Он отлично работает, когда я подключаюсь непосредственно к сети компании в офисе. Однако это не работает, когда я подключаюсь к сети удаленно через VPN.

Когда я запускаю Xming при удаленном подключении, ни один из окон моего терминала не отображается.

Я думаю, что это может быть связано с тем, что переменная окружения DISPLAY неправильно настроена на IP-адрес ноутбука, когда он подключен.

Я заметил, что когда я делаю ipconfig при удаленном подключении, у моего ноутбука есть два IP-адреса: один, назначенный ему из сети компании, и локальный IP-адрес, который я настроил для него в моей "локальной сети" от моего модем / маршрутизатор.

Есть ли какие-то изменения в конфигурации, которые мне нужно внести в Xming для поддержки его использования через VPN?

9 ответов

Решение

Скорее всего, это либо X-аутентификация, либо привязка X-сервера к интерфейсу, либо ваша переменная DISPLAY. Я не использую Xming сам, но есть некоторые общие явления, чтобы проверить. Один тест, который вы можете сделать, чтобы вручную проверить правильность переменной DISPLAY:

  1. Запустите свой VPN. Запустите ipconfig, чтобы убедиться, что у вас есть два IP-адреса, которые вы упомянули (ваш локальный IP-адрес и ваш VPN-IP).
  2. Начать Xming. Запустите 'netstat -n', чтобы увидеть, как он связывается с интерфейсом. Вы должны увидеть что-то вроде localIP:6000 или VPN IP:6000. Это может быть не 6000, но есть вероятность, что это будет что-то подобное. Если VPN IP: 6000 отсутствует, он может быть привязан только к вашему локальному IP или даже к 127.0.0.1. Это, вероятно, не будет работать через VPN. Проверьте, есть ли какие-либо настройки Xming для привязки к другим или всем интерфейсам.
  3. Если вы видите VPN IP: 6000 или что-то подобное, обратите внимание на то, что он говорит, и на удаленную оболочку на хост UNIX (возможно, что-то вроде ssh, если не то, что вам нужно, чтобы получить текстовый терминал).
  4. В терминале UNIX введите "echo $DISPLAY". Если ничего не отображается, попробуйте "export DISPLAY=VPN IP:0.0", где VPN IP - это ваш IP-адрес VPN, а 0.0 - порт, который вы видели на шаге 3, минус 6000 с.0 в конце (т.е. 6000 = 0.0, 6010 = 10.0).
  5. На хосте UNIX запустите что-то вроде 'xclock' или 'xterm', чтобы проверить, работает ли он. Сообщение об ошибке должно быть информативным. Он скажет вам, что он либо не может подключиться к хосту (проблема с подключением), либо произошла ошибка аутентификации (вам нужно согласовать X auth на вашем хосте и локальном компьютере или Xhosts на локальном компьютере).

Открытие Xhosts (с + для всех хостов или чего-то подобного) не так уж и плохо, если у вас есть локально защищенная сеть и вы используете VPN. Надеюсь, это поможет вам найти решение проблемы. Другой вариант, который часто бывает полезен, поскольку он работает через VPN или простое подключение по ssh, - это ssh-туннелирование или пересылка X11 через ssh. Это моделирует подключение к X-серверу на вашем локальном компьютере, перенаправляя порт на хосте UNIX на локальный порт на вашем сервере X-сервера. Ваше отображение обычно будет что-то вроде localhost:10.0 для локального порта 6010.

X может быть очень неудобен в настройке, но обычно он отлично работает, когда вы освоите его.

Спасибо за помощь @Stephen и @Greg Castle, с помощью которой мне удалось решить мою проблему.

Чтобы предоставить основное руководство для других (с нуля):

Использование Xwindows на ПК с Windows для подключения к серверу UNIX через VPN

С чего нужно начать:

Что делать:

  1. Установите оба вышеперечисленных на ПК с Windows

  2. Из меню Пуск Windows выберите: Программы -> Xming -> Xming

  3. Запустите программу Putty.exe в том месте, где вы ее загрузили.

  4. На экране конфигурации PuTTY сделайте следующее:

    • Установите IP-адрес равным IP-адресу вашего сервера UNIX

    • Выберите переключатель SSH Protocol

    • Выберите категорию SSH: Tunnels в левой части экрана конфигурации.

    • Установите флажок Включить пересылку X11

    • Нажмите кнопку Открыть

    • Войдите в систему как обычно на свой сервер UNIX

    • Убедитесь, что каталог, содержащий утилиты X windows, находится на вашем пути, например, /usr/X/bin в Solaris

    • Запустите ваши команды X Windows в окне замазки, и они появятся на вашем рабочем столе.

Я получил Xming и PuTTY, работающие с Cisco VPN, заменив конфигурацию PuTTY в Connection > SSH > X11 > X display location, localhost:0.0, с VPNIP:0.0, VPNIP можно увидеть в VPN statistics clientaddress information щелкнув левой кнопкой мыши на VPN client значок замка и выберите Statistics...,

Я не гадил с переменной окружения DISPLAY на удаленном хосте. Но, как и другие, я изменил sshd_config на удаленном хосте, добавив следующие строки:

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
AddressFamily inet

У меня та же проблема с Xming и Putty на компьютере с Windows 10, и я нашел решение здесь. Я преодолел проблему, просто добавив туннели в сессию в PuTTY. Но сначала нужно проверить;

  • sshd_config в /etc/ssh (в rhel7).
  • Включить пересылку X11 на левой навигационной панели Connections > SSH > X11
  • iptables в /etc/sysconfig/ (в rhel7). Если порты заблокированы, и у вас есть разрешение, откройте порты для 6000. Я добавил строку ниже перед первой строкой отклонения, чтобы открыть порты от 6000 до 6003. Это может быть более конкретным в вашем случае.

    -A INPUT -m state --state NEW -m tcp -p tcp -m multiport --dports 5901:5903,6000:6003 -j ACCEPT

Затем;

  • Идти к Connections > SSH > Tunnels в PuTTY и добавить туннель с Source Port=6000, Destination=127.0.0.1:6000 и проверить Remote переключатель. Затем нажмите Add кнопка.
  • После того, как ваше SSH-соединение установлено, установите переменную DISPLAY вручную с помощью следующей команды:
    export DISPLAY=127.0.0.1:0.0

Дополнительная информация;
Если вы установите DISPLAY переменная как 127.0.0.1:1.0, он будет общаться через 6001 порт. В этом случае вам нужно добавить еще один туннель для порта номер 6001.

У меня не было ничего, кроме проблем с Xming. Когда я мог заставить это работать, это было чрезвычайно медленно (это по VPN). IMO X не предназначен для работы через медленные соединения, это слишком болтливо. Под медленным подключением я имею в виду что-то меньшее, чем подключение к локальной сети

Моим решением было использовать x11vnc. Это позволяет вам получить доступ к вашему существующему сеансу X11 через VNC. Я просто SSH в мой ящик через VPN и запускаю:

$ x11vnc -display :0

Таким образом, я могу получить доступ ко всему, что я открыл в течение дня. Затем, когда я этого не сделаю, я просто выход (Ctrl-C) в терминале, чтобы закрыть x11vnc.

putty + XMing - мне пришлось вручную установить переменную окружения DISPLAY для запуска (наряду с проверкой "Включить пересылку X11" в putty - Connection/SSH/X11)

экспорт DISPLAY=0:10,0

(было установлено значение "localhost: 10.0", которое не работало)

У меня нет точной проблемы, но я думаю, что вам нужно взглянуть на xhost и убедиться, что удаленному vpn разрешено отправлять данные на x-сервер.

Эта ссылка может помочь: http://www.straightrunning.com/XmingNotes/trouble.php

Возможно, вам больше повезет, если вы переадресовываете X11 через SSH, а не работаете напрямую с переменной DISPLAY. Пересылка X11 по SSH безопасна и использует существующее SSH-соединение для туннелирования, поэтому работа через VPN не должна быть проблемой.

К счастью, с Xming это довольно просто. Если вы откроете свое соединение из Xming (например, опция plink), я полагаю, что по умолчанию он устанавливает пересылку X11. Если вы подключаетесь с помощью другого SSH-клиента (например, PuTTY), вам просто нужно включить пересылку X11 (например, 'ssh -X user@host'). В PuTTY опция находится в разделе Соединение -> SSH -> X11 -> нажмите "Включить пересылку X11".

Убедитесь, что Xming работает в фоновом режиме на вашем ноутбуке и выполните стандартный тест X, "xclock". Если вы получили сообщение типа "X соединение с локальным хостом: 19.0 прервано (явное уничтожение или отключение сервера)". тогда Xming скорее всего не работает.

Кроме того, убедитесь, что вы не устанавливаете переменную DISPLAY явно ни в одном из скриптов запуска; SSH установит псевдоним (что-то вроде localhost:10 или в примере выше localhost:19) для туннеля X11 и автоматически установит DISPLAY в это значение. Перезапись DISPLAY, очевидно, будет означать, что вы больше не будете указывать на правильный туннель X11. Обратная сторона этого заключается в том, что другие терминалы, которые не имеют набора пересылки SSH X11, могут использовать то же значение DISPLAY и использовать преимущества туннеля.

Я предпочитаю вариант PuTTY, но некоторые из моих коллег используют plink из Xming.

Вы должны добавить DNS-имя и IP-адрес компьютера с Linux в файл C:\Program Files\xming\X0.hosts. Файл должен содержать:

LinuxBox.mydomain.com
LinuxBox
192.168.1.25

Это правильный ответ: https://www.slackwiki.com/X_Windows:_Remote_X_to_Windows_with_Xming

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