Где изменить расположение по умолчанию файла.Xauthority при входе через ssh -X от имени конкретного пользователя
Мне нужно изменить .Xauthority
расположение файла для группы пользователей $HOME/tmp/.Xauthority
а не по умолчанию $HOME/.Xauthority
,
Я уже пробовал то, что я мог догнать из нескольких источников, таких как:
Я установил переменную среды, как это в нескольких /etc/.profile
, .profile
, .bashrc
.... и т. д. со следующим: XAUTHORITY=$HOME/tmp/.Xauthority
С результатом:
Любая попытка входа в систему с пользователем группы sshx (ssh -X server
) приводит к тайм-ауту в блокировке $HOME/.Xauthority
, Это как ничего не изменилось. Интересно, что если я echo $XAUTHORITY
это показывает $HOME/tmp/.Xauthority
, authx
работает также, но не во время входа в систему.
Поэтому обработка, в которой я нуждаюсь, должна произойти где-то перед ssh -X
или при установлении X-соединения. Где я должен изменить его, чтобы я мог обращаться только к группе пользователей, поскольку я не хочу, чтобы root или пользователи без группы sshX были затронуты, поскольку у них в конечном итоге нет каталога?
2 ответа
То, как я это делаю, это установить XAUTHORITY=/tmp/Xauthority-username
в ~/.ssh/environment
, но это требует изменения /etc/ssh/sshd_config
сказать PermitUserEnvironment yes
,
я использую /tmp
потому что это сохраняет его локальным для каждой машины. С домашними каталогами в NFS это становится узким местом и вызывает состязание, при котором запуск нескольких приложений одновременно на нескольких удаленных хостах может привести к сбою некоторых.
Я придумал что-то частичное, но все же теперь у меня.Xauthority переместился в ~/tmp/.Xauthority, что на данный момент является большим прогрессом. (Ubuntu Server является целевой ОС)
Все настройки остаются неизменными, необходимо создать файл ~/.ssh/rc, который загружается при подключении имени сервера ssh -X:
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 -f ~/tmp/.Xauthority -
fi
который запускает xauth и создает файл в нужном вам месте, он также добавляет / создает записи в файле.Xauthority для правильной аутентификации.
Теперь вам нужно изменить профиль ~./, Так как оболочка загружена, ей нужно знать, где находится файл.Xauthority. Поэтому мы добавляем одну строку в самом верху:
export XAUTHORITY=~/tmp/.Xauthority
Это позволяет мне подключаться через ssh -X servername к оболочке и запускать любое приложение X. Давайте попробуем это, запустив xeyes или xclock.
Круто, но еще одна проблема возникла у меня, чтобы все было сделано правильно, но у меня сейчас нет решения. Если вы попытаетесь запустить приложение X непосредственно с пульта, например:
x@y:~$ ssh -X servername xeyes
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
Error: Can't open display: localhost:11.0
Это интересная ошибка, поскольку, если вы гуглите ее, ответов будет много, но теперь сама ситуация приводит к тому, что что-то другое, когда загружается bash и он опущен. Единственное, что я предполагаю, это строка в.profile, которая устанавливает переменную XAUTHORITY, но как мне установить ее без загрузки оболочки. Почему это работает, если у меня есть пользователь с файлом.Xauthority в расположении по умолчанию (~/.Xauthority)?