ssh返回消息“通道1上的X11转发请求失败”


33

当我进入没有运行任何类型的X11桌面环境的远程服务器时,会收到以下消息。

$ ssh user@server
X11 forwarding request failed

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

我如何摆脱这些消息?

Answers:


38

仅使用SSH选项,就可以通过3种方法之一消除这些消息。您始终也可以向其中发送消息,/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通过包含SSH参数ForwardX11 来指示客户端不要尝试启用X11转发。

$ ssh -o ForwardX11=no root@server

您可以使用-x开关执行相同的操作:

$ ssh -x root@server

这只会暂时禁用此消息,但是如果您不能或不愿意xauth在远程服务器上安装,这是一个不错的选择。

方法#3-通过sshd_config禁用它

通常,这是默认设置,但如果不是默认设置,则可以设置sshd服务器,以便在中关闭X11Forwarding /etc/ssh/sshd_config

X11Forwarding no

在通常使用#2的3种方法中,因为我经常需要X11Forwarding对大多数服务器进行操作,但又不想看到X11....警告

$ HOME / .ssh / config

这些消息在很多时候甚至都不会显示。通常仅在$HOME/.ssh/config文件顶部具有以下条目时才显示它们。

ServerAliveInterval 15
ForwardX11 yes
ForwardAgent yes
ForwardX11Trusted yes

GatewayPorts yes

因此,正是这种设置最终推动了这些X11..消息的生成,因此,如果您想ForwardX11 yes默认使用on 进行操作,则方法2似乎是最合适的,但是从ssh客户端的角度来看,对于某些连接,则有选择地禁用它。

安全

通常不建议一直使用ForwardX11 yes它。因此,如果您想以最安全的方式操作SSH连接,则最好执行以下操作:

  1. 不要包含ForwardX11 yes在您的$HOME/.ssh/config文件中
  2. 仅在需要通过时使用ForwardingX11 ssh -X user@server
  3. 如果可以的话,请X11Forwarding在服务器上完全禁用,以免被禁用

参考文献



为了记录在案,我收到的时候我那个消息试图在远程服务器上运行的X客户端。它们不会启动,因为未设置$ DISPLAY。我设法解决了您的第一个建议:安装xauth。
汤姆·埃利斯

13

以我为例,添加此字符串即可/etc/ssh/sshd_config解决问题:

X11UseLocalhost no

这对我有用(服务器已经安装了xauth)。谢谢。
Paul Higgins 2015年

这似乎解决了我的问题,但是我不明白为什么,这很令人担忧。我应该有三台相同的Debian 7机器,其中一台突然停止接受locahostX11转发。其他两个上的X11转发仍然有效。知道会发生什么变化吗?
凯尔·斯特兰德

12

今天跑过去,打我的头一段时间,直到偶然发现ssh设置:

如果是RHEL 7(centOS,OEL等),并且已禁用ipv6,则需要:

AddressFamily inet

在/ etc / ssh / sshd_config中设置。


如果仅仅是与此相关的错误消息...
杰克·瓦西,

你知道有什么好笑的吗?我今天遇到了这个问题,并在Google上搜索了一下,找到了这篇文章,并找到了我四年前的评论,并说:“哦,是的,这是问题所在。”
Systemspoet

2

如果您不想再看到某些服务器的此消息(即停止尝试转发X11),但对于所有其他连接,则将默认设置保持为ForwardX11 yes,则这是另一个小变化。

对于这种情况,您可以在〜/ .ssh / config中为特定主机(或范围)禁用X11转发。像这样:

host 10.1.1.*
ForwardX11 no 

致谢:这是对现有(非常完整)现有答案的一点点修饰-因为我无法发表评论!


2

如果以详细模式运行客户端(ssh -v user@host),则可以

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

但是xauth确实安装在服务器上,则可能是因为sshd在错误的位置(通常是/ usr / X11R6 / bin / xauth)寻找xauth可执行文件。可以通过设置解决

XAuthLocation /usr/bin/xauth

/ etc / sshd / sshd_config(或配置了服务器的任何文件)中。


这在CentOS 7上对我有用。这就是我所看到的确切错误消息。
布莱恩·明顿

这是我的问题,尝试远程登录Mac。那里正确的咒语是XAuthLocation / opt / X11 / bin / xauth
Leon Avery

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

  • 本地-服务Xserver的本地计算机。
  • 远程-为应用程序提供服务的远程计算机,该驱动器将数据发送到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"

在测试中,本地运行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. /etc/ssh/sshd_config在RHEL主机中设置以下2个选项

    X11Forwarding yes X11UseLocalhost no

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

  3. sudo yum install xauth
  4. 使用-X开关ssh返回您的RHEL主机: ssh -X yourname@rhelbox
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.