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

slm*_*slm 40 ssh x11

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

$ ssh user@server
X11 forwarding request failed

$ ssh user@server ls
X11 forwarding request failed on channel 1
file1
file2
...
Run Code Online (Sandbox Code Playgroud)

我怎样才能摆脱这些消息?

slm*_*slm 45

这些消息可以通过 3 种方法中的一种消除,仅使用 SSH 选项。您也可以随时向其发送消息,/dev/null但这些方法尝试通过配置来处理消息,而不仅仅是捕获和转储它们。

方法 #1 - 安装 xauth

您远程访问的服务器抱怨它无法在用户.Xauthority文件中创建条目,因为xauth未安装。所以你可以在每台服务器上安装它来摆脱这个烦人的消息。

在 Fedora 19 上,您可以xauth像这样安装:

$ sudo yum install xorg-x11-xauth
Run Code Online (Sandbox Code Playgroud)

如果您随后尝试ssh进入服务器,您将看到一条消息,指出正在用户.Xauthority文件中创建一个条目。

$ ssh root@server
/usr/bin/xauth:  creating new authority file /root/.Xauthority
$
Run Code Online (Sandbox Code Playgroud)

后续登录将不再显示此消息。

方法#2 - 通过 ForwardX11 禁用它

您可以ssh通过包含 SSH 参数 ForwardX11来指示客户端不要尝试启用 X11 转发。

$ ssh -o ForwardX11=no root@server
Run Code Online (Sandbox Code Playgroud)

你可以用-x开关做同样的事情:

$ ssh -x root@server
Run Code Online (Sandbox Code Playgroud)

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

方法 #3 - 通过 sshd_config 禁用它

这通常是默认设置,但如果不是,您可以设置您的sshd服务器,以便 X11Forwarding 在/etc/ssh/sshd_config.

X11Forwarding no
Run Code Online (Sandbox Code Playgroud)

在我通常使用的 3 种方法中 #2,因为我经常希望X11Forwarding在我的大多数服务器上使用,但不想看到X11....警告

$HOME/.ssh/config

大多数情况下,这些消息甚至不会出现。它们通常仅在您的$HOME/.ssh/config文件中包含以下条目时才会出现,位于顶部。

ServerAliveInterval 15
ForwardX11 yes
ForwardAgent yes
ForwardX11Trusted yes

GatewayPorts yes
Run Code Online (Sandbox Code Playgroud)

所以这是这个设置,它最终驱动了这些X11..消息的生成,所以同样,如果您想ForwardX11 yes默认使用on操作,方法 #2 似乎是最合适的,但然后从ssh客户端的角度有选择地为某些连接禁用它.

安全

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

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

参考


Sys*_*oet 16

今天遇到了这个问题,让我震惊了一段时间,直到我偶然发现了一个 ssh 设置:

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

AddressFamily inet
Run Code Online (Sandbox Code Playgroud)

在 /etc/ssh/sshd_config.conf 中设置。

  • 你知道什么好笑吗?我今天遇到了这个问题,用谷歌搜索,找到了这篇文章,并找到了我四年前的评论,并说“哦,是的,这就是问题所在。” (2认同)

use*_*194 15

在我的情况下,添加此字符串来/etc/ssh/sshd_config解决问题:

X11UseLocalhost no
Run Code Online (Sandbox Code Playgroud)

  • 这似乎解决了我的问题,但我不明白为什么,这是令人担忧的。我有三台完全相同的 Debian 7 机器,其中一台突然停止接受 `locahost` X11 转发。其他两个上的 X11 转发仍然有效。知道什么可以改变吗? (2认同)