私は部分的なものを思いつきましたが、それでも .Xauthority を ~/tmp/.Xauthority に再配置しました。これは実際には今のところ大きな進歩です。(対象OSはUbuntuサーバー)
すべての設定は同じままです。ssh -X servername の接続時にロードされる ~/.ssh/rc ファイルを作成する必要があるだけです。
if read proto cookie && [ -n "$DISPLAY" ]; then
if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then
# X11UseLocalhost=yes
echo add unix:`echo $DISPLAY |
cut -c11-` $proto $cookie
else
# X11UseLocalhost=no
echo add $DISPLAY $proto $cookie
fi | xauth -q -f ~/tmp/.Xauthority -
fi
これにより、xauth が開始され、必要な場所にファイルが作成されます。また、適切な認証のために .Xauthority ファイルにエントリが追加/作成されます。
~./profile を変更する必要があります。シェルがロードされているため、.Xauthority ファイルがどこにあるかを知る必要があります。したがって、一番上に 1 行追加します。
export XAUTHORITY=~/tmp/.Xauthority
これにより、ssh -X servername 経由でシェルに接続し、任意の X アプリを起動できます。xeyes または xclock を起動して、これを試してみましょう。
クールですが、それを正しく行うために別の問題が発生しましたが、今は解決策がありません。X アプリをリモートから直接起動しようとすると、次のようになります。
x@y:~$ ssh -X servername xeyes
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
Error: Can't open display: localhost:11.0
これは興味深いエラーです。Google で検索すると多くの回答が得られますが、状況自体が、bash がロードされ、省略されている場合に何かが異なるという仮定につながります。私が推測する唯一のことは、XAUTHORITY 変数を設定する .profile の行ですが、シェルをロードせずに設定するにはどうすればよいですか。デフォルトの場所 (~/.Xauthority) に .Xauthority ファイルがあるユーザーがいる場合、なぜ機能するのですか?