欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Linux中如何修复“X11 forwarding request failed on channel 0”错误

程序员文章站 2022-06-12 11:57:29
当我尝试使用SSH的X11转发选项连接到远程主机时, 我在登录时遇到了一个 "X11 forwarding request failed on channel 0" (X11 转发请求在通道0上失败)的错误。 我为什么会遇到这个错... 14-10-22...

问题: 当我尝试使用ssh的x11转发选项连接到远程主机时, 我在登录时遇到了一个 "x11 forwarding request failed on channel 0" (x11 转发请求在通道0上失败)的错误。 我为什么会遇到这个错误,并且该如何修复它?

首先,我们假设你已经正确启用了ssh的x11转发。

Linux中如何修复“X11 forwarding request failed on channel 0”错误

如果你在登录时遇到"x11 forwarding request failed on channel 0" (x11 转发请求在通道0上失败),这里可能有不同的原因,解决的方法也不同。

Linux中如何修复“X11 forwarding request failed on channel 0”错误

方案一

出于安全原因,openssh服务默认将x11转发请求绑定到本地回环地址上,并且在display环境变量中将主机名设置为“localhost”。在这样的设定下,一些 x11客户端不能正确处理x11转发,这会导致报告中的错误。要解决这个问题,在/etc/ssh/sshd配置文件中加入下面这几行,它可以将x11转发请求绑定到外网卡地址上。

$ sudo vi /etc/ssh/sshd_config 
x11forwarding yesx11uselocalhost no

重启ssh使设置生效:

$ sudo /etc/init.d/ssh restart (debian 6, ubuntu or linux mint)
$ sudo systemctl restart ssh.service (debian 7, centos/rhel 7, fedora)
$ sudo service sshd restart (centos/rhel 6)

方案二

如果远程主机的ssh服务禁止了ipv6,那么x11转发失败的错误也有可能发生。要解决这个情况下的错误。打开/etc/ssh/sshd配置文件,取消对"addressfamily all" (如果有这条的话)的注释。接着加入下面这行。这会强制ssh服务只使用ipv4而不是ipv6。(lctt 译注:此处恐有误,addressfamily 没有 all 这个参数,而 any 代表同时支持 ipv6和 ipv4,以此处的场景而言,应该是关闭ipv6支持,只支持 ipv4,所以此处应该是“注释掉 addressfamily any”才对。)

$ sudo vi /etc/ssh/sshd_config 
addressfamily inet

再说一次,重启ssh服务来完成设置,谢谢阅读,希望能帮到大家,请继续关注,我们会努力分享更多优秀的文章。