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