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

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

$ ssh [email protected]
X11 forwarding request failed

$ ssh [email protected] ls
X11 forwarding request failed on channel 1
file1
file2
...

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

26 голосов | спросил slm 29 Jpm1000000pmWed, 29 Jan 2014 22:23:57 +040014 2014, 22:23:57

7 ответов


31

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

Метод # 1 - установить xauth

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

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

$ sudo yum install xorg-x11-xauth

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

$ ssh [email protected]
/usr/bin/xauth:  creating new authority file /root/.Xauthority
$

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

Метод №2 - отключить его через ForwardX11

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

$ ssh -o ForwardX11=no [email protected]

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

$ ssh -x [email protected]

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

Способ №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 [email protected]
  3. Если вы можете, полностью отключите X11Forwarding на сервере, чтобы он был запрещен

Ссылки

ответил slm 29 Jpm1000000pmWed, 29 Jan 2014 22:44:25 +040014 2014, 22:44:25
10

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

X11UseLocalhost no
ответил user3132194 22 PMpWed, 22 Apr 2015 16:33:49 +030033Wednesday 2015, 16:33:49
10

Развернувшись сегодня и немного побей мою голову, пока я не наткнулся на настройку ssh:

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

AddressFamily inet

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

ответил Systemspoet 17 ThuEurope/Moscow2015-12-17T19:39:48+03:00Europe/Moscow12bEurope/MoscowThu, 17 Dec 2015 19:39:48 +0300 2015, 19:39:48
2

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

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

host 10.1.1.*
ForwardX11 no 

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

ответил philarmour 1 TueEurope/Moscow2015-12-01T23:51:55+03:00Europe/Moscow12bEurope/MoscowTue, 01 Dec 2015 23:51:55 +0300 2015, 23:51:55
2

Если запуск клиента в подробном режиме (ssh -v [email protected]) дает вам

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

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

XAuthLocation /usr/bin/xauth

в /etc /sshd /sshd_config (или независимо от вашего сервера).

ответил Anton Samsonov 29 PMpFri, 29 Apr 2016 16:43:45 +030043Friday 2016, 16:43:45
0

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

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

является пользователем root.

ответил timidgeek 3 J000000Tuesday18 2018, 11:15:20
-2
  1. Задайте следующие 2 параметра в /etc/ssh/sshd_config на вашем хосте RHEL

    X11Forwarding yes X11UseLocalhost no

  2. sudo /etc/init.d/sshd reload sudo yum install xauth литий>
  3. ssh обратно на ваш хост RHEL с ключом -X: ssh -X [email protected]
ответил user149406 30 WedEurope/Moscow2015-12-30T13:14:16+03:00Europe/Moscow12bEurope/MoscowWed, 30 Dec 2015 13:14:16 +0300 2015, 13:14:16

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132