问题:当我尝试使用SSH的X11转发选项连接到远程主机时,我在登录时遇到了一个"X11forwardingrequestfailedonchannel0"(X11转发请求在通道0上失败)的错误。我为什么会遇到这个错误,并且该如何修复它?
首先,我们假设你已经正确启用了SSH的X11转发。
如果你在登录时遇到"X11forwardingrequestfailedonchannel0"(X11转发请求在通道0上失败),这里可能有不同的原因,解决的方法也不同。
方案一
出于安全原因,OpenSSH服务默认将X11转发请求绑定到本地回环地址上,并且在DISPLAY环境变量中将主机名设置为localhost。在这样的设定下,一些X11客户端不能正确处理X11转发,这会导致报告中的错误。要解决这个问题,在/etc/ssh/sshd配置文件中加入下面这几行,它可以将X11转发请求绑定到外网卡地址上。
$sudovi/etc/ssh/sshd_configX11ForwardingyesX11UseLocalhostno重启SSH使设置生效:
$sudo/etc/init.d/sshrestart(Debian6,UbuntuorLinuxMint)$sudosystemctlrestartssh.service(Debian7,CentOS/RHEL7,Fedora)$sudoservicesshdrestart(CentOS/RHEL6)方案二
如果远程主机的SSH服务禁止了IPv6,那么X11转发失败的错误也有可能发生。要解决这个情况下的错误。打开/etc/ssh/sshd配置文件,取消对"AddressFamilyall"(如果有这条的话)的注释。接着加入下面这行。这会强制SSH服务只使用IPv4而不是IPv6。(LCTT译注:此处恐有误,AddressFamily没有all这个参数,而any代表同时支持IPv6和IPv4,以此处的场景而言,应该是关闭IPv6支持,只支持IPv4,所以此处应该是注释掉AddressFamilyany才对。)
$sudovi/etc/ssh/sshd_configAddressFamilyinet再说一次,重启SSH服务来完成设置,谢谢阅读,希望能帮到大家,请继续关注,我们会努力分享更多优秀的文章。