2018年5月17日 星期四

既遠端又變身的 X forwading

我在本地電腦 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 來用。 修改一下, 得到如下的解法。

  1. 在 /home/avatar/.bashrc 裡面加上一句 export XAUTHORITY=~/.Xauthority
  2. 幫 avatar 建一個空的 .Xauthority 檔: echo > ~/.Xauthority
  3. 登出, 以 ckhung@pandora 的身份執行 xauth list, 查看有哪些 MIT-MAGIC-COOKIE-1 可用。
  4. 再變身回 avatar: su avatar
  5. 把先前看到的其中一列 (應該是最後一列吧) MIT-MAGIC-COOKIE-1 剪貼到 xauth add 指令後面。

這篇 對於 ssh 如何傳送 ~/.Xauthority 裡的 cookie 有更多解釋。 現在 avatar@pandora 的圖形視窗就可以丟回 ckhung@earth 執行, 我終於可以透過阿凡達的眼睛觀賞潘朵拉星的世界了!

沒有留言:

張貼留言