我通过 SSH(从 Windows)连接到我的 Ubuntu Disco 服务器。
我可以运行 X-Apps,例如,我的 LXPanel 现在就显示出来。我安装了 Firefox(通过apt
),它显示了。
我安装了几个X-snap,它们都显示如下错误:
PuTTY X11 proxy: Unsupported authorisation protocol
QXcbConnection: Could not connect to display localhost:10.0
唯一运行的是 VS Code。这是一个“经典”的 snap。
有人能给我一个主意吗?
答案1
于是我又试了一次,现在我自己找到了答案。显然,我第一次尝试时无法用谷歌搜索到这个...
问题在于 Xauthority,因为 snap 程序不知道这一点。该问题已讨论这里有多种解决方案,包括
XAUTHORITY=$HOME/.Xauthority /snap/bin/mysnap
答案2
您的 ssh 服务器身份验证 cookie 对可能是主要问题
从远程控制(8)手册页:
如果文件 ~/.ssh/rc 存在,sh(1) 将在读取环境文件之后但在启动用户的 shell 或命令之前运行它。它不得在 stdout 上产生任何输出;必须改用 stderr。如果正在使用 X11 转发,它将在其标准输入中接收“proto cookie”对(并在其环境中显示 DISPLAY)。脚本必须调用 xauth(1),因为 sshd 不会自动运行 xauth 来添加 X11 cookie。
因此,您可以将以下内容添加到 /etc/ssh/sshrc(手册中也说明了):
if read proto cookie && [ -n "$DISPLAY" ]; then
if [ 'echo $DISPLAY | cut -c1-10' = 'localhost:' ]; then
# X11UseLocalhost=yes
echo add unix:'echo $DISPLAY |
cut -c11-' $proto $cookie
else
# X11UseLocalhost=no
echo add $DISPLAY $proto $cookie
fi | xauth -q -
fi