
通常我在 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設定相同:
- 鬆弛軟體作品
- 馬力 作品
- CentOS7 不工作
答案1
另一個解決方案是將目前使用者的 .Xauthority 檔案與 root 使用者的 .Xauthority 檔案合併。
ssh user@host
- 更改 .Xauthority 檔案權限,以便 root 也可以存取它。
sudo su - root
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 -