这个错误通常与 X11 转发(X11 forwarding)有关,特别是在使用 SSH 连接到远程服务器并尝试运行需要图形界面的应用程序时。以下是一些可能的解决方案:

1. 确保 X11 转发已启用

在客户端启用 X11 转发

在使用 ssh 连接时,确保使用 -X-Y 选项:

ssh -X user@remote_host

ssh -Y user@remote_host
在服务器端启用 X11 转发

确保 SSH 服务器配置文件 /etc/ssh/sshd_config 中包含以下行:

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

然后重新启动 SSH 服务:

sudo systemctl restart sshd

2. 安装和配置 X11 服务器

确保你在本地计算机上安装了 X11 服务器。对于不同的操作系统,有不同的 X11 服务器:

  • Windows: 使用 Xming 或 VcXsrv。
  • MacOS: 使用 XQuartz。
  • Linux: 通常已经自带 X11 服务器。
启动 X11 服务器

确保 X11 服务器正在运行。如果你使用的是 Xming 或 VcXsrv,在启动这些应用程序后,它们会在系统托盘中显示一个图标。

3. 设置 DISPLAY 环境变量

在远程服务器上,确保 DISPLAY 环境变量已正确设置。通常,SSH 会自动设置这个变量,但你可以手动设置以进行测试:

export DISPLAY=localhost:10.0

4. 检查 X11 授权

确保 X11 授权文件(例如 .Xauthority)存在并且可读。如果不存在,可以尝试重新生成:

xauth generate :0 . trusted
xauth add $(xauth list | tail -n 1)

5. 检查防火墙设置

确保防火墙没有阻止 X11 转发所需的端口。你可能需要在防火墙配置中打开这些端口。

6. 使用 -Y 选项

如果你仍然遇到问题,可以尝试使用 -Y 选项来代替 -X 选项进行 SSH 连接。这将启用受信任的 X11 转发:

ssh -Y user@remote_host

示例汇总

  1. 启动 X11 服务器(例如 Xming 或 VcXsrv)。

  2. 使用 -Y 选项连接到远程服务器:

    ssh -Y user@remote_host
    
  3. 在远程服务器上确认 DISPLAY 变量已设置:

    echo $DISPLAY
    
  4. 尝试运行你的图形界面应用程序。

通过这些步骤,你应该能够解决 MoTTY X11 proxy: Unsupported authorisation protocolError: couldn't open display localhost:10.0 的问题。如果问题仍然存在,请提供更多详细信息以便进一步诊断。

更多推荐