在过去的几周里,我断断续续地寻找这个问题的答案,但我见过的解决方案都不适合我。我尝试删除这两个位置的 .Xauthority 文件。我使用 Cygwin X 访问另一台计算机。最近X11转发不能用了。在我的本地计算机上启动 X 服务器后:
[local]$ export DISPLAY=0.0
[local]$ ssh -XY user@remotelocation
Warning: No xauth data; using fake authentication data for X11 forwarding.
我不确定这是否有帮助,但是:
[remote]$ xauth list
location/unix:10 MIT-MAGIC-COOKIE-1 304eb389beb66bf44ae6bc1821bdf472
最后,问题出现在这里:
[remote]$ gedit file &
X11 connection refused because of wrong authentication.
我总是收到“没有 xauth 数据;使用虚假身份验证”警告,但最近 X11 连接因此被拒绝。你有什么建议吗?
答案1
我尝试删除这
.Xauthority
两个位置的文件。
也许在此之前出了什么问题,但在此之后你肯定不会成功。如果您在某个地方找到了此建议,并且他们并不是指某些不适用于您的极其不寻常的情况,请将该来源列入黑名单。.Xauthority
在客户端恢复文件。
如果您丢失了该.Xauthority
文件,您可以从正在运行的进程或临时文件中恢复它。我不知道如何用 Cygwin 做到这一点。一种在任何地方都适用的简单方法是退出 X 服务器并启动一个新服务器。
如果您收到消息“没有 xauth 数据;使用虚假身份验证”,那么远程应用程序将无法在本地服务器上显示,除非其配置为关闭安全性。如果没有 xauth 的安全性,任何人都可以监视您的 X 会话并注入输入(如果他们可以访问 X 服务器);根据配置,他们可能需要是本地用户(在这种情况下,在单用户操作系统上还不错),或者他们可以打开到您的计算机的 TCP 连接就足够了(即,他们是在您的本地网络中,如果您使用公共 wifi,则可以是任何人)。如果它曾经有效但现在不再有效,可能是因为最近修复了一些缺失的安全检查。
获得有效.Xauthority
文件后,打开 shell 并检查是否可以运行本地应用程序,例如gedit
.从同一个 shell 中,运行ssh -X user@remotelocation
并尝试运行 X 应用程序。要么这会起作用,要么你会收到错误消息;阅读它们,如果您寻求帮助,请复制粘贴它们。如果不起作用,请运行ssh -vv -X user@remotelocation
;额外的调试输出将提供一些有关其不起作用的原因的信息。
请确保服务器允许远程 X 连接。对于 OpenSSH,文件/etc/sshd_config
(或/etc/ssh/sshd_config
其他位置,取决于发行版)必须包含X11Forwarding yes
.