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

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

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

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

Эти сообщения можно устранить с помощью 1 из 3 методов, используя только параметры 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 работать с ForwardX11 yes . Поэтому, если вы хотите использовать свои SSH-соединения в самой безопасной усадьбе, лучше всего сделать следующее:

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

Рекомендации

  • SSH: защищенная оболочка – окончательное руководство – 9.3. X Пересылка

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

 X11UseLocalhost no 

Пробежал через это сегодня и немного побил голову, пока я не наткнулся на настройку ssh:

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

 AddressFamily inet 

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

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

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

 host 10.1.1.* ForwardX11 no 

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

Если запуск клиента в подробном режиме ( 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 (или независимо от вашего сервера).

  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