Xforwarding не позволяет переключать пользователей

Xforwarding не позволяет переключать пользователей

Я подключаюсь по ssh к удаленному компьютеру, и xforwarding работает нормально... но как только я выполняю команду «sudo su -» или «sudo su user2», он больше ничего не перенаправляет, выдавая ошибку:

X11 connection rejected because of wrong authentication.
xterm Xt error: Can't open display: localhost:10.0

Есть идеи?

Спасибо

решение1

  1. Включите пересылку X-11 в вашем клиенте
  2. Войдите как обычный пользователь.
  3. echo $DISPLAYчтобы получить соответствующий дисплей
  4. xauth list, найдите номер дисплея, который соответствует тому, что вы нашли в пункте 3, и скопируйте его
  5. Sudo для получения прав rootxauth add <paste in what you copied from #4>
  6. Теперь вы можете выполнять команды как root и сможете увидеть соединение X11 Forwarding.

решение2

Прежде чем вы sudoэто сделаете:

$ xauth extract /tmp/xauthstuff $DISPLAY

После этого sudoсделайте следующее:

# xauth merge /tmp/xauthstuff

Вам это подходит?

P.S. не забудьте rm /tmp/xauthstuffпотом

решение3

У меня нет доступа к учетной записи root, чтобы выполнить что-либо из вышеперечисленного, поэтому вот обходной путь, который я использовал.

Сначала подключитесь по SSH к своей учетной записи, как вы это обычно делаете, и проверьте, все ли работает.

ssh -Y <you>@<your_server>

Обычно я просто запускаю XTerm, чтобы убедиться, что у меня есть подключение. Если все хорошо, скопируйте файл .XAuthority, который находится в <you>домашнем каталоге, и поместите его в публичный каталог.

cp ~/.Xauthority /tmp/tempXAuth

Обязательно установите права chmod 777 для этого файла в общедоступном каталоге, чтобы учетная запись sudo могла использовать его на более позднем этапе.

chmod 777 /tmp/tempXAuth

теперь sudo для пользователя, которому вам нужно выполнить работу, как

sudo su - <other_user>

как только вы это сделаете <other_user>, сделайте резервную копию существующего .Xauthority, а затем скопируйте «хороший» файл.

cp ~/.Xauthority ~/.Xauthority.bak
cp /tmp/tempXAuth ~/.Xauthority

вы должны иметь возможность запускать любые программы X и выполнять их аутентификацию в вашем текущем сеансе XServer.

решение4

Как пользователь, под которым вы обычно входите в систему, введите:

cd

sudo cp .Xauthority /root/

Затем вы можете переключиться на root-доступ с помощью:

sudo su

Связанный контент