我遇到了一个问题,如果我在远程系统上以守护程序模式启动 Emacs,然后在我运行的本地系统中ssh remotehost emacsclient -c
,它会失败,X11 连接由于身份验证错误而被拒绝。 但是,ssh remotehost xterm
工作正常,因此与 ssh 连接、X 转发等无关。
有问题的两个系统都运行 Ubuntu 18.04 LTS。
可以猜到,问题是 xauth,特别是在阅读了 2010/2011 年提交的问题之后,这似乎是由于 GDM 将XAUTHORITY
环境变量设置为$XDG_RUNTIME_DIR/gdm/Xauthority
(类似于/run/user/1000/gdm/Xauthority
)的方式,而传入的 SSH 连接没有在为 SSH 会话设置XAUTHORITY
xauth cookie 之前设置。
这意味着 ssh xauth cookie 被添加到默认$HOME/.Xauthority
文件中。我的 Emacs 守护进程无法看到这些 cookie,因为它正在使用 GDM$XDG_RUNTIME_DIR/gdm/Xauthority
文件。
正如我所说,这种差异似乎已经成为 8 年多的已知问题......没有人解决它吗?疯狂的。我已经编写了一个安装 cookie 的脚本,但必须这样做是很恶心的。
有没有办法让我的 ssh 会话使用 GDM Xauthority 文件?我已经尝试XAUTHORITY
在我的 shell 设置中进行设置,但显然设置得太晚了,在 SSH 守护程序配置新的 Xauth cookie 之后,因为它仍然被放入$HOME/.Xauthority
.