使用 X11 SSH 到 NetBSD 8.2 guest 提供 "X11 forwarding request failed on channel 0"

SSH to NetBSD 8.2 guest with X11 gives "X11 forwarding request failed on channel 0"

全部,

我正在尝试设置从 NetBSD 8.2 VM(运行通过 QEMU 连接)到 Ubuntu 20.04 主机的 SSH X11 转发。当我尝试 ssh -X 进入机器时,未设置 $DISPLAY 变量并且我收到一条错误消息:“X11 转发请求在通道 0 上失败”。以下是相关的环境详细信息:

如果我运行ssh -v,那么我得到的相关X11输出如下:

Authenticated to localhost ([127.0.0.1]:10022).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: exec
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug1: Requesting X11 forwarding with authentication spoofing.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
X11 forwarding request failed on channel 0

这可能是什么原因?

X11 转发在 ssh 客户端和 sshd 服务器中默认禁用。在客户端控制它的设置叫做ForwardX11,在服务器端的设置叫做X11Forwarding.

当使用 ssh 从 Ubuntu 机器连接到 NetBSD 机器时,正在使用以下配置文件:

  • ssh 客户端(Ubuntu 机器上)
    • ~/.ssh/config
    • /etc/ssh/ssh_config
  • sshd服务器上(NetBSD机器)
    • /etc/ssh/sshd_config

然而,对于 ssh(1) 客户端,您可以只使用 -X 开关而不是编辑任何客户端配置文件。事实上,我强烈建议使用 -X 开关为所有主机启用 X11 转发(即在 Host * 块中,如下所示)。

如果您确实要编辑 ssh 客户端配置,ssh_config(5) 设置就是您已经记下的设置:

Host *
  ForwardX11 yes
  XauthLocation /usr/bin/xauth

XauthLocation 的默认值已经是 Ubuntu 上的 /usr/bin/xauth,因此无需指定它,除非您在另一个安装了另一个 xauth 程序位置并且您想将其与 ssh.

一起使用

sshd(8) server on the NetBSD machine also has to allow X11 forwarding. These sshd_config(5) 设置是您仍然需要更改的设置:

X11Forwarding yes
XAuthLocation /usr/X11R6/bin/xauth

同样,XAuthLocation 的默认值在 NetBSD 8.2 上已经是 /usr/X11R6/bin/xauth,因此无需指定它。

更改sshd_config设置后,还需要重新启动sshd服务(作为root用户):

service sshd restart