奇妙なことは、X11転送でsshを使用して接続すると、ユーザーとルートは表示できますが、xclock
他のユーザーは表示できないことです。なぜ?
mahmood@cluster:~$ xclock
^C
mahmood@cluster:~$ su
Password:
root@cluster:mahmood# xclock
^C
root@cluster:mahmood# su - hmousavi
hmousavi@cluster:~$ xclock
MobaXterm X11 proxy: Authorisation not recognised
Error: Can't open display: localhost:10.0
hmousavi@cluster:~$
PS:ウィンドウを^C
見ることができるという意味なので、端末に戻るキーをxclock
押します。^C
答え1
X11ディスプレイに接続するには、ディスプレイ名(通常はDISPLAY
環境変数に渡される)と2つの情報が必要です。クッキー、これはすべてのアプリケーションが接続時に表示する必要があるモニターパスワードです。通常、Cookieはに保存されますが、環境変数に応じて他のファイル~/.Xauthority
に保存することもできます。XAUTHORITY
DISPLAY
SSHで設定した値は、呼び出し間でも維持されているようですsu
。しかし、クッキーはそこにあります~mahmood/.Xauthority
。プログラムをhmousaviとして実行すると、プログラムはそこでクッキーを見つけて~hmousavi/.Xauthority
別の値を見つけます。
原則として実行できますが、XAUTHORITY=~mahmood/.Xauthority xclock
hmousaviにはファイルを読み取る権限がない可能性があります。.Xauthority
他のユーザーはファイルを読み取ることはできません。このxauth
コマンドは2回使用できます。一度はクッキー値(xauth list localhost:10.0
)を抽出するためにmahmoodで、一度は値を取得するためにhmousaviとして使用できますが(xauth merge
)面倒です。 X11アプリケーションを操作する最も簡単な方法は、全体としてSSHを使用することです。 SSHは自動的にX11転送を設定するためです。
mahmood@cluster:~$ ssh -X hmousavi@localhost
hmousavi@cluster:~$ xclock
.ssh/authorized_keys
これを可能にするには、mahmoodのSSH公開鍵をhmousaviに追加してください。