2011-07-13 18:13:00 +0000 2011-07-13 18:13:00 +0000
117
117

Как исправить ошибку "cannot open display" при открытии программы X после ssh ing с включенной переадресацией X11?

После запуска приложения X11 (XQuartz 2.3.6, xorg-сервер 1.4.2-apple56) на моем Mac (OS X 10.6.8), открытия терминала в X11 и запуска xhost +, я затем ssh -Y на мою ВМ Ubuntu 10.04 (запущенную на VMware Fusion). Когда я запускаю gedit .bashrc (например), я получаю:

(gedit:9510): Gtk-WARNING **: cannot open display:

set | grep DISPLAY ничего не возвращает.

Но если я ssh -Y на машине Ubuntu 11.04, gedit .bashrc работает. echo $DISPLAY возвращает “localhost:10.0”.

Я попробовал export DISPLAY=localhost:10.0 во время прошивания в мою ВМ, а затем запустил gedit .bashrc, но я получил:

(gedit:9625): Gtk-WARNING **: cannot open display: localhost:10.0

Что может быть разным в конфигурации двух разных машин Ubuntu, что бы объяснить, почему одна работает, а другая нет?

Обновление: Как предполагает Zoredache в комментарии ниже, я запустил sudo apt-get install xbase-clients, но у меня по-прежнему есть та же проблема.

Ответы (14)

62
62
62
2012-02-21 08:47:03 +0000

Из xhost+ : Как исправить ошибку “Cannot Open Display” при запуске GUI на удаленном сервере :

Answer : Ошибку “Cannot Open Display” можно исправить, выполнив процедуру xhost, упомянутую в этой статье.

Долгое подключение клиентов с любого хоста с помощью xhost+

Выполните следующую команду, чтобы отключить контроль доступа, с помощью которой вы можете разрешить клиентам подключаться с любого хоста.

$ xhost +

контроль доступа отключен, клиенты могут подключаться с любого хоста

Переадресация X11 включена

Во время выполнения ssh используйте опцию -X, чтобы включить переадресацию X11.

$ ssh username@hostname -X

Включить переадресацию X11 с помощью опции -Y,

$ ssh username@hostname -Y

Открыть приложения с графическим интерфейсом на этом хосте

После открытия ssh-подключения к удаленному хосту, как описано выше, можно открыть любое приложение с графическим интерфейсом, которое откроет его без каких-либо проблем.

Если вы все еще получаете ошибку “не можете открыть отображение”, установите переменную DISPLAY, как показано ниже.

$ export DISPLAY='IP:0.0'

Примечание: IP - это IP локальной рабочей станции, на которой вы хотите, чтобы отображалось GUI-приложение.

49
49
49
2011-07-13 18:54:50 +0000

Проверьте сервер sshd_config (обычно /etc/ssh/sshd_config) и убедитесь, что опция X11Forwarding включена со строкой

X11Forwarding yes

Если X11Forwarding не указана, то по умолчанию на машинах Debian, которые я могу проверить, нет.

18
18
18
2012-06-29 20:44:03 +0000

У меня тоже была эта проблема при входе в Ubuntu VM из Mac OS X - похоже, по каким-то причинам не нравится ‘localhost’ в переменной отображения. Поэтому установите IP вручную, как предлагает Harrymc:

export DISPLAY="127.0.0.1:10.0"

Тогда программы X11 должны быть в порядке. Не похоже, что нужно говорить операционной системе, что localhost и 127.0.0.1 эквивалентны, но это работает, по крайней мере.

14
14
14
2012-10-22 07:59:02 +0000

У меня была проблема с моим CentOS KVM сервером, я пропустил программу “xauth”.

9
9
9
2014-10-17 08:06:53 +0000

Если у вас есть эта проблема после некоторого времени при запуске с -X arg. или просто ForwardX11 в /etc/ssh/ssh_config, а затем запустить $ ssh username@hostname -Y, чтобы включить другой X11 пересылки , не знаю точной причины, но я предполагаю, с -X некоторые функции истекают через некоторое время, вероятно, для повышения безопасности.

Вот, что я нашел в Интернете:

Если вы используете ssh -X пульт дистанционного управления удаленной машиной рассматривается как недоверенным клиентом. Поэтому ваш локальный клиент посылает команду на удаленную машину и получает графический вывод. Если ваша команда нарушает некоторые настройки безопасности, вы получите ошибку.

Но если вы используете ssh -Y remoteemachine, удаленный компьютер рассматривается как доверенный клиент. Эта последняя опция может открыть проблемы безопасности. Потому что другой графический (X11) клиент может прослушивать данные с удаленной машины (делать скриншоты, вести журнал регистрации ключей и другие неприятные вещи), и даже можно изменить эти данные.

Если вы хотите узнать больше о таких вещах, я предлагаю прочитать страницу управления Xsecurity или спецификацию расширения X Security. Кроме того, вы можете проверить опции ForwardX11 и ForwardX11Trusted в /etc/ssh/ssh_config.

источники:

6
6
6
2017-08-30 11:36:06 +0000

Протестировано на моем Mac, другие системы могут быть в порядке :

  1. Позвольте клиентам подключаться с любого хоста с помощью xhost+

$ xhost +

  1. У вас должно быть окружение, поддерживающее отображение X11

[Mac System] Install X11 for mac https://www.xquartz.org/

  1. Вы должны позволить вашему ssh-серверу переадресовывать x11 дисплей

обновить /etc/ssh/sshd_config и установить X11Forwarding yes, затем перезапустить ваш ssh-сервер

  1. Вы должны позволить вашему ssh-сессии переадресовывать x11 дисплей с -X параметром echo $DISPLAY

$ ssh -X user@ip

  1. Как открыть приложение X11 в PyCharm?
  • откройте ssh-сессию, поддерживающую X11-дисплей (не забудьте сохранить эту сессию)
  • запустите DISPLAY в этой ssh-сессии
  • установите переменную окружения &007 для вашего PyCharm.
4
4
4
2017-09-01 01:17:28 +0000

Я должен был поставить /etc/ssh/sshd_config следующим образом:

X11UseLocalhost no

Вместо того, чтобы ставить “да”. Странно, если по умолчанию “NO” Пользователи используют шпаклевку с XMing под Windows. Я использую прямой ssh поверх Fedora. Иногда он начинает давать нам

error can't open display localhost

Перезагрузка сервера обычно исправляет это, но это глупо. Перезагрузил службу sshd на сервере и престаллизовал новые соединения, и все снова работает нормально.

4
4
4
2012-07-10 21:26:59 +0000

При запуске UXTERM или XTERM просто выдайте

export $DISPLAY

Переменная будет там. Затем просто установите ее и экспортируйте.

3
3
3
2019-07-08 17:25:35 +0000

Эта настройка работает для меня:

Local (64-битный Cygwin на Windows 10) DISPLAY=:0

Server (Amazon EC2 RHEL 7.6) DISPLAY=:10.0

Эти настройки были найдены, нажав “X приложений меню на :0” на панели задач и выбрав System Tools > Terminal.

2
2
2
2015-03-18 22:52:32 +0000

У меня также была проблема с Solaris 10 и я обнаружил, что слушатель не был настроен.

svccfg –s /application/x11/x11-server listprop options/tcp_listen
svccfg –s /application/x11/x11-server setprop options/tcp_listen = true
1
1
1
2017-05-01 04:13:35 +0000

Если вы случайно используете Konsole, просто переключитесь на другой терминальный эмулятор, такой как Xfce Terminal, и попробуйте еще раз использовать root.

1
1
1
2014-07-15 15:13:51 +0000

На CentOS 6.5 я внезапно потерял удаленный доступ к X-программам после общения с /etc/hosts. Тот же симптом пустой переменной $DISPLAY (нет ручной настройки/экспорта справки).

Необходима запись 127.0.0.1, указывающая на фактическое имя хоста; на самом деле порядок кажется также уместным (поставьте последнюю & она не будет работать…)

[root@poseidon /etc]$ cat hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
127.0.0.1 poseidon.mycampus.edu poseidon
1XX.XXX.XXX.208 poseidon.mycampus.edu poseidon

После исправления, xeyes, xclock и другие тестовые игрушки X снова работают, поэтому мой нужный virt-менеджер также снова в строю.

1
1
1
2016-06-10 11:56:04 +0000

Я только что нашел милую икоту в моей установке, которая препятствовала пересылке x: Мой брандмауэр блокировал все соединения с localhost, тем самым предотвращая доступ к туннелю.

1
1
1
2018-05-30 13:40:40 +0000

открыть терминал $ ssh имя пользователя@имя хоста -X

$ ssh username@hostname -Y

$ export DISPLAY='IP:0.0'

экспорт DISPLAY=“127.0.0.1:10.0” все должно работать.

Похожие вопросы

3
19
12
16
13