Ssh

ssh 和 sudo 但沒有 $DISPLAY

  • July 26, 2021

通常我在 ssh 上執行此操作以獲取 X 應用程序sudo su

ssh -X server

OKI登錄

xauth list $DISPLAY

回到我身邊

server/unix:10  MIT-MAGIC-COOKIE-1  blablablablabla

然後我做

sudo su
xauth add server/unix:10  MIT-MAGIC-COOKIE-1  blablablablabla

在執行 X 應用程序之後..我明白了,它是正確的。

問題出在Centos7上,我有

xauth list $DISPLAY

它什麼也不返回。我嘗試添加由

xauth list

但它當然行不通。通過 ssh 的正常 X 轉發,沒有 sudo 工作。

sshd 的設置在 3 台伺服器上是相同的:

  1. slackware工作
  2. hpux 工作
  3. centos7 不工作

另一種解決方案是將目前使用者的 .Xauthority 文件與 root 使用者的文件合併。

  1. ssh user@host
  2. 更改 .Xauthority 文件權限,以便 root 也可以訪問它。
  3. sudo su - root
  4. xauth merge /home/users/user/.Xauthority

測試

gedit somefile.log

它應該打開一個 gedit 視窗。

要使解決方案永久化,您可以修改.bashrc登錄使用者的文件添加

if [ -z "$XAUTHORITY" ]; then
   export XAUTHORITY=$HOME/.Xauthority
fi

此外,您必須更新sudoers文件添加行

Defaults env_keep+="DISPLAY XAUTHORITY"

如果 root 對登錄使用者的.Xauthority文件具有讀取權限,您將能夠使用 X 應用程序。

引用自:https://unix.stackexchange.com/questions/241394