Назад | Перейти на главную страницу

Попытка заставить X11 работать через SSH: соединение отклонено сервером

Использование Cygwin / X11
Запустить команду в локальном Xterm для SSH:

xterm -e ssh -Y -v -l MyUser myserver.mydomain.com &

После входа я запустил

setenv ОТОБРАЖЕНИЕ myclient.mydomain.com:0.0

Когда я пытаюсь запустить Xterm, я получаю:

Xlib: соединение с myclient.mydomain.com:0.0 отклонено сервером
Xlib: протокол не указан

Ошибка xterm Xt: не удается открыть дисплей: myclient.mydomain.com:0.0

На другом сервере у меня нет проблем с запуском новых окон xterm без запуска setenv.
"echo $ DISPLAY" на этом сервере возвращает "localhost: 11.0"

Если я попытаюсь использовать это на другом сервере, я получу следующее:

$ setenv ДИСПЛЕЙ localhost: 11.0
$ xterm
Ошибка xterm Xt: не удается открыть дисплей: localhost: 11.0

Я полагаю, что мне не хватает чего-то довольно простого, но я не уверен, что это такое.


РЕДАКТИРОВАТЬ:
Пробовал не устанавливать $ DISPLAY:

Вот результаты

$ echo $ DISPLAY
ДИСПЛЕЙ: Неопределенная переменная.
$ xlogo
Ошибка: не удается открыть дисплей:

Все еще не работает :-(


ИЗМЕНИТЬ снова: Вышеупомянутое было при прямом входе в систему. Я не удалял $ DISPLAY и не менял его перед запуском xlogo

Не устанавливайте дисплей на удаленной стороне. Используя параметр -Y в SSH, он настроит прослушиватель на (удаленной) локальной стороне, который туннелируется обратно на локальную сторону.

Вы должны уметь это делать:

local$ ssh -Y user@remote
remote$ xlogo

... и появится xlogo.

Редактировать: это предполагает, что сначала дисплей настроен в локальной системе, то есть:

local$ xlogo

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

local$ ssh remote
remote$ ssh further
further$ xlogo

...должно сработать.

вы должны использовать X11 R5. С этой версией ваши окна X11 должны работать на сервере. Затем выполните следующие cmds -

printenv | grep 'X11'
printenv | grep 'ssh'

если вы обнаружите, что окна X11 запущены, то -

xterm -e 'ssh remote.machine.domain
xhost + remote.machine.domain
setenv DISPLAY local.machine.domain:0.0
xterm &

Когда вы вводите указанные выше команды, если xterm выводит графический интерфейс, значит, ваша среда X11 настроена для работы с ssh. Если нет, проверьте, установлена ​​ли последняя версия для X11.

Если это не сработает, напишите мне. Я посмотрю в логи. хорошо!.

Дэвид в значительной степени прибил половину уравнения - механизм ssh автоматически позаботится о настройке аутентификации xauth и определении вашего дисплея, поэтому не переопределите это вручную, установив переменную DISPLAY самостоятельно.

Другая проблема заключается в том, что некоторые демоны ssh на стороне назначения настроены так, чтобы запрещать пересылку X, даже если вы спросите вежливо.

ssh -v сообщит вам, если сервер откажется разрешить перенаправление X; вы также можете посмотреть sshd_config, чтобы узнать, запрещает ли он X-пересылку.

Вы должны сделать после входа в систему

echo $DISPLAY

Вероятно, вы получите что-то вроде "localhost: 11.0". Это означает, что ssh будет автоматически перенаправлять любое соединение, идущее к localhost display 11, на ваш сервер X11 на ноутбуке. Итак, просто запустите свою программу.

Когда вы изменяете ДИСПЛЕЙ, вы говорите программе подключиться напрямую к вашему ноутбуку (без шифрования). Для того, чтобы это работало, вы должны разрешить его на вашем ноутбуке (сделайте что-нибудь вроде "xhost + myclient.mydomain.com").

Кроме того, когда вы выполняете «ssh -Y», на сервере X-сервер должен прослушивать TCP-порт 6000 + n, где n - номер дисплея, назначенный вашему доверенному соединению. Вы можете проверить, выполнив:

netstat -l -t 

затем проверьте, есть ли что-нибудь открытое после порта 6000 (например, 6011). Если по какой-либо причине ДИСПЛЕЙ настроен неправильно (может быть, на машине вашего коллеги?), Попробуйте сделать:

setenv DISPLAY localhost:11.0

Из man ssh:

-X   Enables X11 forwarding. This can
     also  be specified on a per-host
     basis in a configuration file.