Я столкнулся с проблемой, заключающейся в том, что если я запускаю 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-соединений не устанавливается XAUTHORITY
перед настройкой файлов cookie xauth для сеанса SSH.
Это означает, что файлы cookie ssh xauth добавляются в файл $HOME/.Xauthority
по умолчанию.Мой демон Emacs не может видеть эти куки, потому что он использует файл GDM $XDG_RUNTIME_DIR/gdm/Xauthority
.
Как я уже сказал, кажется, что это несоответствие было известной проблемой в течение 8+ лет ... никто не решил ее?Псих.Я написал скрипт, который устанавливает cookie, но это довольно сложно.
Есть ли способ заставить мою сессию ssh использовать файл GDM Xauthority?Я попытался установить XAUTHORITY
в моей настройке оболочки, но, видимо, он установлен слишком поздно, после того, как демон SSH настроит новый файл cookie Xauth, потому что он все еще помещен в $HOME/.Xauthority
.