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

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

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

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

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

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

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

Ответов (9)

Решение

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

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

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

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

Я получил Xming и PuTTY работает с Cisco VPN, заменив конфигурацию PuTTY в Connection > SSH > X11 > X display location, localhost:0.0 с VPNIP:0.0 . VPNIP можно увидеть в VPN statistics client address 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.

Вам необходимо добавить 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

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

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

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

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

$ x11vnc -display :0

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

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

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

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

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

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

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

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

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

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

What to do:

  1. Install both of the above on your Windows PC

  2. From the Windows start menu select: Programs -> Xming -> Xming

  3. Run the Putty.exe program in the location you downloaded it to

  4. In the PuTTY configuration screen do the following:

    • Set the IP address to be the IP address of your UNIX server

    • Select the SSH Protocol radio-button

    • Click the SSH : Tunnels category in the left hand pane of the configuration screen

    • Click the Enable X11 forwarding check-box

    • Click the Open button

    • Logon as usual to your UNIX server

    • Check the directory containing the X windows utilities are in your path, e.g. /usr/X/bin on Solaris

    • Run your X Windows commands in your putty window and they will spawn new windows on your desktop

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

экспорт ДИСПЛЕЙ = 0: 10.0

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