我在本地電腦 earth 使用帳號 ckhung (以下簡稱 ckhung@earth)。
用 ssh -X pandora.xxx.yyy
登入遠方主機 pandora
上的帳號 ckhung (以下簡稱 ckhung@pandora),
因為命令列上有 -X 而且
伺服器端已設定 X11UseLocalhost no, 所以 ckhung@pandora
的圖形視窗可以丟回 ckhung@earth, 這稱為
ssh X forwarding。
然後在 pandora 上面執行 su avatar
變身成 avatar@pandora 結果就無法執行圖形軟體了。
想用 xauth list
除錯, 電腦卡很久,
最後出現 xauth: timeout in locking
authority file /home/ckhung/.Xauthority
。
原來是因為 avatar@pandora 的 XAUTHORITY
這個環境變數依舊指向 /home/ckhung/.Xauthority 。
以 avatar 的身份執行 env | grep ckhung
,
會發現一堆環境變數 -- 包含 XAUTHORITY -- 都還是採用 ckhung 的設定。
這個檔案不屬於 avatar 所有, 當然就無權開啟, 也因此失敗。
所以退出、 改採 su -l avatar
重新變身一次。
其他變數都不再提及 ckhung, 但奇怪的是,
XAUTHORITY 依舊指向 /home/ckhung/.Xauthority。
參考一下
這個解答 但考量我們的狀況是 su 成另一個普通人,
而不是 su 成 root, 所以不能直接搶 ckhung@pandora
的 .Xauthority 來用。 修改一下, 得到如下的解法。
- 在 /home/avatar/.bashrc 裡面加上一句
export XAUTHORITY=~/.Xauthority
- 幫 avatar 建一個空的 .Xauthority 檔:
echo > ~/.Xauthority
- 登出, 以 ckhung@pandora 的身份執行
xauth list
, 查看有哪些 MIT-MAGIC-COOKIE-1 可用。 - 再變身回 avatar:
su avatar
- 把先前看到的其中一列 (應該是最後一列吧)
MIT-MAGIC-COOKIE-1 剪貼到
xauth add
指令後面。
這篇 對於 ssh 如何傳送 ~/.Xauthority 裡的 cookie 有更多解釋。 現在 avatar@pandora 的圖形視窗就可以丟回 ckhung@earth 執行, 我終於可以透過阿凡達的眼睛觀賞潘朵拉星的世界了!
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。