У меня установлен PuTTY, и я могу успешно войти на удаленный хост. У меня также установлен Xming на том же хосте, на котором работает PuTTY. Удаленный хост работает под управлением Ubuntu 12.04, и по умолчанию для localhost установлено значение 127.0.1.1 в /etc/hosts . Когда я вхожу, переменная DISPLAY правильно установлена в localhost:10.0 , но по какой-то причине приложения X не могут открыть дисплей:

[user@host ~]$ xeyes
Error: Can't open display: localhost:10.0

Однако, если я установлю переменную DISPLAY на 127.0.0.1:10.0 , то X11 будет успешно перенаправлен в Xming. Если я изменяю localhost в окне Ubuntu для разрешения 127.0.0.1 , это работает, но куча других приложений неожиданно становится очень медленной, даже после перезагрузки. Так что это не решение для меня.

Что я хочу знать, это то, что слушает на 127.0.0.1 вместо 127.0.1.1? Это Х? Или SSH? Как я могу принудительно разрешить localhost из /etc/hosts а не предполагать, что это 127.0.0.1? Согласно Википедии, приложениям разрешается делать такое предположение, но в моем конкретном случае это вызывает у меня проблемы! В качестве альтернативы, как я могу настроить переменную DISPLAY чтобы она автоматически выставлялась 127.0.0.1:10.0 при входе в систему?

1 ответ1

1

Создайте псевдоним в вашем .bashrc / .bash_aliases (в зависимости от того, как настроены ваши файлы ресурсов входа):

alias x='export DISPLAY="127.0.0.1:$(echo $DISPLAY | sed '"'"'s/.*:\(.*\)/\1/'"'"')"'

И затем введите x при входе в систему.

(Обратите внимание, что это обрабатывает тот факт, что для каждого нового запроса на пересылку X, направляемого на SSHD на удаленном хосте, число, назначенное вашему сеансу X, увеличивается, поэтому оно может быть:10,0 или 11,0 и т.д.).

Вы можете поместить команду экспорта в свой .login , но это повлияет на ВСЕ логины, а не только на те, которые сделаны из putty.

РЕДАКТИРОВАТЬ: ОП спросил, почему это работает. Я бы предположил, что у вас есть псевдоним на вашем устройстве обратной связи с адресом 127.0.1.1, и стандартный адрес обратной связи в качестве адреса основного интерфейса (ifconfig подтвердит это). Большинство петлевых устройств по умолчанию используют сетевой блок 127.0.0.0/8, и поэтому для маршрутизации /8 через устройство lo будет использоваться маршрутизация:

127.0.0.0/8 dev lo  scope link 

localhost (как вы уже указали) разрешается через ваш /etc/hosts и указывает на этот адрес 127.0.1.1, и, следовательно, это IP, который будут использовать большинство сервисов. Вы можете быть в состоянии изменить его для разрешения на 127.0.0.1, но это, вероятно , также связаны с перезапуском все услуги , которые используют 127.0.1.1 адрес netstat -an покажет их) после того, как вы изменили его в файле хостов.

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