С переадресацией SSH X11 (`ssh -X`) получите` Can't open display`, пытаясь запустить приложения X


22

Я могу войти на сервер, используя

ssh -X Hostip

но когда я запускаю команду xclock, это дает мне эту ошибку

Error: Can't open display: localhost:11.0

Я проверяю значение моего дисплея, используя

echo $DISPLAY

и результат

localhost:11.0

И пересылка X11 установлена ​​в YES в файле sshd_config

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

Любой совет, что я здесь скучаю?


3
Вы пробовали -Yвместо -X?
Флюп

2
Также убедитесь, что вы понимаете последствия использования -Yвместо -X. Вы также можете посмотреть xhost.
CVn

1
Для RedHat / CentOS 7 (по крайней мере) вам нужен пакет xorg-x11-xauth, согласно моему ответу здесь: unix.stackexchange.com/questions/138936/…
Майк С

Ответы:


18

Использование -Y. Со страницы руководства по ssh:

-Y Включает доверенную пересылку X11. Доверенные пересылки X11 не подвергаются элементам управления расширением X11 SECURITY.

Если у вас все еще есть проблемы, попробуйте установить $DISPLAYIP-адрес вашего локального ящика :

$ export DISPLAY='<ip_address>:11.0'

Это может работать, чтобы установить его как

$ export DISPLAY='127.0.0.1:11.0'

Люди , кажется, эта проблема обычно , когда ssh'ing из Mac OS X . Вы также можете установить

X11UseLocalhost no

и в этом случае.


1
Используя XQuartz, я не смог использовать флаг -Y. «Соединение X11 отклонено из-за неправильной аутентификации».
Эрик

5
даже попробовав другие ваши предложения, я не могу открыть дисплей.
Эрик

2
Ни один из них не работал для меня. Мне нужно было установить поддержку XWindow на моем сервере Centos 7 (минимально) с помощью: yum groupinstall "X Window System" -y
Марк Эдингтон

@MarkEdington это потому, что RedHat / CentOS требует пакет xorg-x11-xauth, согласно моему ответу здесь: unix.stackexchange.com/questions/138936/…
Майк С

6

это сработало для меня:

+ Изменить

X11UseLocalhost yes

в

X11UseLocalhost no

Спасибо, Дон. это сработало и для меня. Я дал тебе голос. Я считаю, что проблема, мешающая настройке по умолчанию, заключалась в том, что на конкретной машине включен xhost.
Л.Д. Джеймс

6
на гостя? хозяин? какой файл конфигурации? спасибо, чтобы завершить свой ответ
Филипп Гачу

Я сделал это для работы, сбросив настройки на /etc/ssh/sshd_config.
Llinfeng

6

Благодарим /unix//a/12772/61349 за их диагностические инструкции.

Убедитесь, что ваш клиент ssh запрашивает пересылку X11 с флагом -v

ssh example.com -X -v

И найдите конкретное сообщение:

debug1: Requesting X11 forwarding with authentication spoofing.

Еще одним признаком проблемы является отсутствие DISPLAYустановленного для вас beign-переменной среды. Если он пуст / не установлен, значит что-то не так. По крайней мере, согласно тому же сообщению, указанному выше , эти переменные устанавливаются автоматически.


Я использовал SSH Control Master мои SSH-соединения, например, так:

Host <hostname>
    ControlMaster auto
    ControlPath ~/.ssh/control/%r@%h:%p
    ControlPersist 10m

Мое раннее ssh-соединение не запрашивало X11Firwarding, поэтому sshопции будущего вызова не использовались. Так что для меня,

ssh -Xпросто игнорировался

Если вы не видите «Запрос пересылки X11», но вы видите сессию повторного использования мультиплексора;

debug1: auto-mux: Trying existing master
debug1: mux_client_request_session: master session id: 10

Затем вам нужно выйти из текущего ControlMaster для этого соединения и повторно подключиться с флагом -X / -Y.

Чтобы остановить ваш ControlMaster

ssh -O check <hostname>

Master running (pid=2758)

(Это завершит все активные подключения с помощью ControlMaster)

ssh -O exit <hostname>

Exit request sent.

3

При попытке пересылки в XQuartz на macOS я исправил проблему, выполнив sshкоманду ( ssh -Yв моем случае) из терминала XQuartz (открывается путем щелчка правой кнопкой мыши на значке XQuartz в доке и выбора Приложения> Терминал).


это работает для меня
дли

3

То, что исправило это для меня, это просто установка xauth, после того, как это сделано, это работает как шарм!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.