Использование 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.