ssh 和 sudo 但沒有 $DISPLAY

ssh 和 sudo 但沒有 $DISPLAY

通常我在 ssh 上執行此操作,以便使用以下命令來取得 X 應用程式sudo su

ssh -X server

衝電氣登錄

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 即可。

3台伺服器上的sshd設定相同:

  1. 鬆弛軟體作品
  2. 馬力 作品
  3. CentOS7 不工作

答案1

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

  1. ssh user@host
  2. 更改 .Xauthority 檔案權限,以便 root 也可以存取它。
  3. sudo su - root
  4. xauth merge /home/users/user/.Xauthority

測試

gedit somefile.log

它應該會打開一個 gedit 視窗。

答案2

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

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

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

Defaults env_keep+="DISPLAY XAUTHORITY"

如果 root 對登入使用者的.Xauthority檔案具有讀取權限,您將能夠使用 X 應用程式。

答案3

找到解決方案。從此複製的替代方法部落格 使用這個腳本

userfirst=sshloginuser
usersecond=sudoorsuuser

$usersecond@host$

    su - $userfirst -c 'xauth list' |\
         grep `echo $DISPLAY |\
             cut -d ':' -f 2 |\
             cut -d '.' -f 1 |\
             sed -e s/^/:/`  |\
         xargs -n 3 xauth add

或只是以 user1 登入

xauth list

su 或 sudo su user2

xauth add OUTPUTOFXAUTHLIST

答案4

一個非常簡單的通用指令:

sudo xauth merge /home/$USER/.Xauthority

這將啟動 root 環境並合併目前(非 root)使用者的 xauth 資訊。

另一種選擇,應該防止 Slackware 評論中報告的所有權問題:

cat ~/.Xauthority | sudo xauth merge -

相關內容