ssh возвращает сообщение «Не удалось отправить запрос X11 на канале 1»


33

Когда я захожу на удаленный сервер, на котором не работает среда рабочего стола X11, я получаю следующее сообщение.

$ ssh user@server
X11 forwarding request failed

$ ssh user@server ls
X11 forwarding request failed on channel 1
file1
file2
...

Как я могу избавиться от этих сообщений?

Ответы:


38

Эти сообщения могут быть удалены одним из трех способов, используя только параметры SSH. Вы также всегда можете отправлять сообщения, /dev/nullно эти методы пытаются обработать сообщение с помощью конфигурации, а не просто перехватывать и сбрасывать их.

Способ № 1 - установить Xauth

Сервер, на который вы обращаетесь, жалуется, что не может создать запись в .Xauthorityфайле пользователя , потому что xauthон не установлен. Таким образом, вы можете установить его на каждом сервере, чтобы избавиться от этого раздражающего сообщения.

На Fedora 19 вы устанавливаете xauthтак:

$ sudo yum install xorg-x11-xauth

Если вы попытаетесь sshзайти на сервер, вы увидите сообщение о том, что в .Xauthorityфайле пользователя создается запись .

$ ssh root@server
/usr/bin/xauth:  creating new authority file /root/.Xauthority
$

Последующие логины больше не будут показывать это сообщение.

Способ № 2 - отключить его через ForwardX11

Вы можете sshуказать клиенту не пытаться включить пересылку X11, включив параметр SSH ForwardX11.

$ ssh -o ForwardX11=no root@server

Вы можете сделать то же самое с -xпереключателем:

$ ssh -x root@server

Это только временно отключит это сообщение, но это хороший вариант, если вы не можете или не хотите устанавливать его xauthна удаленный сервер.

Способ № 3 - отключить его через sshd_config

Обычно это значение по умолчанию, но в sshdпротивном случае вы можете настроить свой сервер так, чтобы X11Forwarding был отключен, в /etc/ssh/sshd_config.

X11Forwarding no

Из 3-х методов, которые я обычно использую, # 2, потому что я часто хочу включить их X11Forwardingна большинстве своих серверов, но потом не хочу видеть X11....предупреждения

$ HOME / .ssh / конфигурации

В большинстве случаев это сообщение даже не будет отображаться. Они обычно присутствуют только тогда, когда у вас есть следующие записи в вашем $HOME/.ssh/configфайле, вверху.

ServerAliveInterval 15
ForwardX11 yes
ForwardAgent yes
ForwardX11Trusted yes

GatewayPorts yes

Таким образом, именно эта настройка в конечном итоге приводит к генерации этих X11..сообщений, поэтому, опять-таки, метод № 2 может показаться наиболее подходящим, если вы хотите работать с ForwardX11 yesвключенным по умолчанию, но затем выборочно отключить его для определенных соединений с sshточки зрения клиента. ,

Безопасность

Как правило, не рекомендуется работать ForwardX11 yesна все время. Так что, если вы хотите работать с SSH-соединениями наиболее безопасным способом, лучше всего сделать следующее:

  1. Не включать ForwardX11 yesв ваш $HOME/.ssh/configфайл
  2. Используйте ForwardingX11 только тогда, когда вам нужно через ssh -X user@server
  3. Если можете, X11Forwardingполностью отключите на сервере, чтобы он был запрещен

Ссылки


Можете ли вы помочь мне с unix.stackexchange.com/questions/470331/… ?
сверхобмена

Для записи, я получил это сообщение , когда я был пытаюсь запустить клиент X на удаленном сервере. Они не запустятся, потому что $ DISPLAY не был установлен. Мне удалось исправить это с вашим первым предложением: установить xauth.
Том Эллис

13

В моем случае добавление этой строки /etc/ssh/sshd_configрешило проблему:

X11UseLocalhost no

Это сработало для меня (на сервере уже был установлен xauth). Спасибо.
Пол Хиггинс

Это казалось, чтобы решить мою проблему, но я не понимаю, почему, что касается. У меня есть три идентичные машины Debian 7, одна из которых внезапно перестала принимать locahostпересылку X11. Переадресация X11 на двух других все еще работает. Есть идеи, что могло измениться?
Кайл Стрэнд,

12

Я наткнулся на это сегодня и некоторое время бил меня по голове, пока не наткнулся на параметр ssh:

Если это RHEL 7 (centOS, OEL и т. Д.) И ipv6 отключен, ему необходимо:

AddressFamily inet

установить в / etc / ssh / sshd_config.


если бы только сообщение об ошибке, связанное с этим ...
Джек Уэйси

ты знаешь что смешного? Я столкнулся с этим сегодня и погуглил, нашел эту статью и нашел свой собственный комментарий от четырехлетней давности и сказал: «О, да, это проблема».
Systempoet

2

Другим небольшим изменением будет, если вы захотите прекратить видеть это сообщение (то есть прекратить попытки пересылки X11) для определенных серверов, но при этом оставьте значение по умолчанию ForwardX11 yes для всех других соединений.

Для этого сценария вы можете отключить пересылку X11 для определенного хоста (или диапазона) в вашем ~ / .ssh / config. Что-то вроде этого:

host 10.1.1.*
ForwardX11 no 

Подтверждение: Это небольшое приукрашивание к существующему (и очень полному) существующему ответу - так как я не мог комментировать!


2

Если запуск клиента в подробном режиме ( ssh -v user@host) дает вам

debug1: Remote: No xauth program; cannot forward with spoofing.

но xauthна самом деле он установлен на сервере, то, вероятно, потому что sshd ищет исполняемый файл xauth в неправильном месте ( обычно / usr / X11R6 / bin / xauth ). Это можно исправить, установив

XAuthLocation /usr/bin/xauth

в / etc / sshd / sshd_config (или где-либо еще, на котором настроен ваш сервер).


Это работало для меня на CentOS 7. Это именно то сообщение об ошибке, которое я видел.
Брайан Минтон

Это была моя проблема, пытаясь войти в систему удаленно на Mac. Там правильное заклинание было XAuthLocation / opt / X11 / bin / xauth
Леон Эйвери

1

Настройка переадресации X11 для каждого хоста

В дополнение ко всем отличным ответам, уже здесь, вы можете настроить ForwardX11для каждого хоста, так что, если только serverне удается, как это, вы можете добавить запись в свой ~/.ssh/configфайл следующей формы:

Host server server.domain.dom
    ForwardX11 no

Вы даже можете использовать такие записи как псевдонимы для целых наборов конфигураций.

Host my.server
    HostName server.domain.dom
    User user
    Port 1234
    ForwardX11 no

Это особенно полезно, если вы настроили автозаполнение имен серверов для SSH и SCP .


1

Я столкнулся с этим вопросом после столкновения с sshd-xauthошибкой почти десятилетнего возраста. Сообщается о двух решениях: первое - в обход xauth, второе - для устранения ошибки.


Решение 1 - обход Xauth

  • local - локальная машина, обслуживающая Xserver.
  • remote - удаленный компьютер, обслуживающий приложение, которое передает данные, идущие на Xserver

Удаленный /etc/ssh/sshd_config:

X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes

Удаленный ~/.Xauthorityпустой или не существует

По местному:

Xephyr -ac -screen 1280x800 -br -reset   :2 &
DISPLAY=:2 ssh  -fR 6010:/tmp/.X11-unix/X2  user@remote "DISPLAY=:10 xeyes"

В тесте local работал Ubuntu 18.05, удаленный - Debian Jesse.

Я также разместил это решение в качестве ответа на другой вопрос.


Решение 2 - устранить ошибку sshd / xauth

Это решение близко к решению @systempoet выше , хотя одного этого было недостаточно.

В дополнение к модификации /etc/ssh/sshd_configна пульте:

AddressFamily inet

/etc/hosts на пульте также были доработаны:

::1     localhost ip6-localhost ip6-loopback

Если любой из них был закомментирован, сообщение об ошибке

X11 forwarding request failed on channel 0

появился после ssh -X ...звонка. Кроме того, /var/log/auth.logпоказанная ошибка:

sshd[...]: error: Failed to allocate internet-domain X11 display socket

Тест для создания ошибки (до исправления):

Локальная машина:

$ Xephyr -ac -screen 1280x800 -br -reset -terminate  :2 &
$ DISPLAY=:2 ssh -X  user@remote
X11 forwarding request failed on channel 0

0

После внесения изменений в конфигурацию необходимо отметить один важный момент: вам нужно будет убить sshd, чтобы он зафиксировал изменения:

cat /var/run/sshd.pid | xargs kill -1

будучи пользователем root.


-2
  1. Установите следующие 2 опции /etc/ssh/sshd_configна вашем хосте RHEL

    X11Forwarding yes X11UseLocalhost no

  2. sudo /etc/init.d/sshd reload

  3. sudo yum install xauth
  4. ssh возвращается к вашему хосту RHEL с ключом -X: ssh -X yourname@rhelbox
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.