Использование 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:
- Запустите свой VPN. Запустите ipconfig, чтобы убедиться, что у вас есть два IP-адреса, которые вы упомянули (ваш локальный IP-адрес и ваш VPN-IP).
- Начать Xming. Запустите 'netstat -n', чтобы увидеть, как он связывается с интерфейсом. Вы должны увидеть что-то вроде localIP:6000 или VPN IP:6000. Это может быть не 6000, но есть вероятность, что это будет что-то подобное. Если VPN IP: 6000 отсутствует, он может быть привязан только к вашему локальному IP или даже к 127.0.0.1. Это, вероятно, не будет работать через VPN. Проверьте, есть ли какие-либо настройки Xming для привязки к другим или всем интерфейсам.
- Если вы видите VPN IP: 6000 или что-то подобное, обратите внимание на то, что он говорит, и на удаленную оболочку на хост UNIX (возможно, что-то вроде ssh, если не то, что вам нужно, чтобы получить текстовый терминал).
- В терминале UNIX введите "echo $DISPLAY". Если ничего не отображается, попробуйте "export DISPLAY=VPN IP:0.0", где VPN IP - это ваш IP-адрес VPN, а 0.0 - порт, который вы видели на шаге 3, минус 6000 с.0 в конце (т.е. 6000 = 0.0, 6010 = 10.0).
- На хосте 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
С чего нужно начать:
Клиент Putty Telnet/SSH, скачать файл putty.exe (бесплатно) с:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Сервер Xming X, скачать Xming (бесплатно) с:
http://sourceforge.net/project/showfiles.php?group_id=156984
Что делать:
Установите оба вышеперечисленных на ПК с Windows
Из меню Пуск Windows выберите: Программы -> Xming -> Xming
Запустите программу Putty.exe в том месте, где вы ее загрузили.
На экране конфигурации 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 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.
У меня не было ничего, кроме проблем с 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