发布时间:2021-09-06 11: 47: 10
在上一篇中,我们介绍了通过Xmanager 7(Win系统)中的Xstart会话或者Xshell(Win系统)中的SSH会话来运行X应用程序(例如 Xterm)时,出现如下图所示“Can’t open display:localhost:16.0”这样的错误消息的两种可能原因。
上次介绍的两种报错原因分别是:
解决方法在上一期中也有比较详细的说明,接下来,我们就继续排查此类报错的另两种可能原因,均是由X11转发错误所导致的。
Xshell中的SSH会话可以使用X11转发功能,通过安全的SSH隧道运行远程X应用程序。此时会验证客户端和服务器之间的Cookie,建立SSH连接后,Cookie会写入用户目录中的.Xauthority文件,只有通过验证的授权用户才能运行 X11 应用程序。
如果写入此cookie时出现错误或无法读取记录的值,则 X11 转发可能会失败,这时我们也可能会看到错误消息。
Cookie值记录错误也有很多种可能原因:
解决方法:需要在SSH服务端配置文件sshd_config中进行路径设置,sshd_config文件的路径一般是/etc/ssh/sshd_config。
指定 xauth的绝对路径,默认路径是 /usr/X11R6/bin/xauth
Ubuntu下安装
Redhat下安装
.Xauthority文件可以在我们的用户主目录中找到,用于存储xauth用于X会话的身份验证。
检查我们的用户主目录的访问权限是否正确设置,如果设置不正确就需要改正。通过以下命令可以更改以前由ROOT拥有的.Xauthority文件所有权:
sudo chown username:username .Xauthority
另外如果用户主目录中还有.Xauthority-c或.Xauthority-l文件,则需要将它们删除。这些文件正常情况下在会话结束后会自动删除,但也会由一些特殊情况会让它们保留下来。如果这些文件存在,那我们会无法将正确的信息写入.Xauthority文件。
如果使用su命令切换了用户,DISPLAY环境变量会正确继承,但Cookie可能不会。于是当我们从一个普通用户切换到另一个普通用户时,cookie值可能无法正确继承 导致报错。
如果切换用户后需要使用X应用,则需要知道前一个用户的cookie值。
在极少数情况下,即使在 SSH 服务器的设置中设置并启用了X11转发,X连接也可能会失败,从而导致“无法打开显示...”错误消息。
在这种情况下,您应该使用以下命令重新启动ssdh保护进程:
# systemctl restart sshd
以上便是使用SSH会话运行X程序时出现localhost错误的4个可能原因和解决方法,大家如果想要了解更多使用Xshell连接服务器的使用技巧,敬请关注Xshell中文网。
作者:∅
展开阅读全文
︾