ssh -X "Xt error: не могу открыть дисплей::0.0"
Я пытаюсь открыть xterm
на моем удаленном сервере (Ubuntu Server 10.04) с помощью ssh:
ssh -X name@machine xterm
но возвращается ошибка:
xterm Xt error: Can't open display: :0.0`
Я погуглил и попробовал все, что нашел. Все еще получаю эту ошибку. Переменная DISPLAY должна быть установлена автоматически, верно?
Часть sshd_config
:
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
Любой совет?
7 ответов
Если ssh может установить соединение, он установит DISPLAY
к правильному значению. Так как у вас есть X11DisplayOffset
при значении 10 (значение по умолчанию) ssh будет использовать первый доступный дисплей, начиная с 10. Если вы видите значение, которое меньше 10¹, то что-то мешает нормальной переадресации X11, установленной ssh, по крайней мере, путем переопределения DISPLAY
, Значение :0
(или же :0.0
(часть после точки не имеет значения) указывает на первый дисплей, который был запущен на машине, который в типичных случаях является активным сеансом (или графическим приглашением для входа в систему) на консоли машины.
Наиболее вероятное объяснение поведения, которое вы наблюдаете, заключается в том, что один из ваших файлов конфигурации оболочки устанавливает DISPLAY
, Самый очевидный виновник ~/.bashrc
(который из-за причуды bash выполняется всякий раз, когда родитель bash rshd
или же sshd
, даже если оболочка не является интерактивной). Другой файл, который определяет переменные среды /etc/environment
, Если это так, решение очевидно: не устанавливайте DISPLAY
там. (Есть очень мало случаев, когда вам нужно установить DISPLAY
вручную.)
Есть и другие экзотические объяснения. Это может произойти, если вы изменили свою оболочку входа в систему на screen
(милая идея в теории, но не практичная) и у вас есть файл инициализации оболочки, который принудительно устанавливает DISPLAY
внутренний экран (не очень хорошая идея). Это также может произойти, если вы настроили сервер на прием переменных среды, отправленных клиентом (AcceptEnv
директива в sshd_config
), клиент отправляет DISPLAY
и X-соединение не может быть установлено. Или это может произойти, если вы установите переменную среды на сервере через command
директива в ~/.ssh/authorized_keys
, Или же xterm
может быть сценарием.
Whatever Или независимо от значения X11DisplayOffset
находится в конфигурации сервера, но он почти никогда не меняется по умолчанию.
Ваша команда должна работать, или, по крайней мере, она работает для меня. Попробуйте это вместо этого:
ssh -Y user@machine xterm
Изменить (1):
Попробуй это:
ssh -X user@machine env
Это должно показать всю окружающую среду. Там должны быть различные вещи по SSH, а также DISPLAY. ДИСПЛЕЙ должен быть 10.0.
Вы также можете попробовать это:
ssh -X user@machine DISPLAY=10.0 xterm
Так же как X11Forwarding yes
Мне тоже нужно было добавить
X11UseLocalhost no
в /etc/ssh/sshd_config
как описано здесь.
Контроль доступа X, вероятно, в пути.
Бежать xhost +
(из пакета x11-xserver-utils
) полностью отключить контроль доступа.
Также убедитесь, что у вас установлен X11 на стороне клиента. Я получил эту проблему, когда я обновил свой Mac до OS X Mountain Lion. Mountain Lion удаляет X11, поэтому вам придется установить его снова через проект X Quartz с открытым исходным кодом. http://xquartz.macosforge.org/landing/
Вы должны сначала открыть соединение, а после того, как установлено, открыть xterm.