Я пытаюсь открыть 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
Любой совет?
xterm
в текущем терминале до SSH-IN?Ответы:
Если 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
директива insshd_config
), клиент отправляетDISPLAY
, и X-соединение не может быть установлено. Или это может произойти, если вы установите переменную окружения на сервере с помощьюcommand
директивы in~/.ssh/authorized_keys
. Илиxterm
может быть сценарий.¹ Или какое-либо значение
X11DisplayOffset
в конфигурации сервера, но вряд ли когда-либо изменилось по умолчанию.источник
DISPLAY=localhost:11.0
по моемуenv
, но его актуальность и стоит ли мне его менятьDISPLAY 10.0
, неясно.DISPLAY=:0 xterm
и все еще получаюxterm: Xt error: Can't open display: :0
ошибку, поэтому переменная окружения не является проблемой.Ваша команда должна работать, или, по крайней мере, она работает для меня. Попробуйте это вместо:
Изменить (1):
Попробуй это:
Это должно показать всю окружающую среду. Там должны быть различные вещи SSH, а также DISPLAY. ДИСПЛЕЙ должен быть 10.0.
Вы также можете попробовать это:
источник
-Y
но это не сработало. Я все еще получаюCan't open display: :0.0
localhost:10.0
Контроль доступа X, вероятно, в пути.
Запустите
xhost +
(из пакетаx11-xserver-utils
), чтобы полностью отключить контроль доступа.источник
Кроме того
X11Forwarding yes
, мне также нужно было добавитьв
/etc/ssh/sshd_config
как описано здесь .
источник
Я обнаружил, что xauth не был установлен.
источник
Также убедитесь, что у вас установлен X11 на стороне клиента. Я получил эту проблему, когда я обновил свой Mac до OS X Mountain Lion. Mountain Lion удаляет X11, поэтому вам придется установить его снова через проект X Quartz с открытым исходным кодом. http://xquartz.macosforge.org/landing/
источник
Вы должны сначала открыть соединение, а после того, как установлено, открыть xterm.
источник
ssh -X name@machine
и после подключенияxterm
я получаю ту же ошибку. Вы имели в виду это? ;)ssh
сначала подключается, затем в этойssh
среде запускается xterm . Так что в любом случае это почти то же самое, только если вы используетеssh -X remote
сначала, тогда вы можете проверить, проверяете ли вы,echo $DISPLAY
чтобы убедиться, что$DISPLAY
он правильно установлен на удаленном компьютере послеssh -X
.