SSH および su 経由の X11 転送

SSH および su 経由の X11 転送

xclock私にとって、X11 転送で ssh 接続を使用しているときに、ユーザーと root は を見ることができるのに、別のユーザーはそれを見ることができないのは奇妙です。なぜでしょうか?

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環境変数で渡される)とクッキーこれは、すべてのアプリケーションが接続時に表示する必要があるディスプレイのパスワードです。通常、Cookie は に保存されます~/.Xauthorityが、環境変数で指定された別のファイルに保存することもできますXAUTHORITY

SSH によって設定されたの値は、DISPLAYの 2 回の呼び出しによって保存されたようですsu。ただし、クッキーは にあります。hmousavi~mahmood/.Xauthorityとしてプログラムを実行すると、プログラムは のクッキーを検索し~hmousavi/.Xauthority、異なる値を見つけます。

原理的には を実行できますXAUTHORITY=~mahmood/.Xauthority xclockが、hmousavi にはおそらくそのファイルを読み取る権限がありません。つまり、その.Xauthorityファイルは他のユーザーが読み取れないようにする必要があります。xauthコマンドを 2 回使用して、1 回は mahmood としてクッキー値を抽出し ( xauth list localhost:10.0)、もう 1 回は hmousavi としてその値をインポートします ( xauth merge) が、これは面倒です。X11 アプリケーションを動作させる最も簡単な方法は、SSH を全面的に使用することです。SSH は X11 転送を自動的に設定するためです。

mahmood@cluster:~$ ssh -X hmousavi@localhost
hmousavi@cluster:~$ xclock

これを許可するには、mahmood の SSH 公開キーを hmousavi の公開キーに追加します.ssh/authorized_keys

関連情報