6

ユーザーのグループのファイルの場所をデフォルトではなく変更する.Xauthority必要があります。$HOME/tmp/.Xauthority$HOME/.Xauthority

私はすでに次のようないくつかの情報源から追いつくことができるものを試しました:

このような環境変数をいくつか/etc/.profileの 、.profile.bashrc.... などに次のように設定します。XAUTHORITY=$HOME/tmp/.Xauthority

結果は次のとおりです。

sshx group( ssh -X server) のユーザーでログインしようとすると、ロック中にタイムアウトが発生し$HOME/.Xauthorityます。何も変わっていないに等しい。興味深いのは、私がecho $XAUTHORITYそれを示している場合$HOME/tmp/.Xauthorityです。authx同様に機能していますが、ログイン時ではありません。

ssh -Xしたがって、必要な処理は、X 接続の確立前または確立中にどこかで実行する必要があります。最終的にディレクトリを持たないため、ルートまたはsshXグループのないユーザーに影響を与えたくないので、ユーザーのグループにのみ対処できるようにするには、どこを変更する必要がありますか?

4

2 に答える 2

4

私のやり方は に設定することですがXAUTHORITY=/tmp/Xauthority-username、それにはと言うよう~/.ssh/environmentに変更する必要があります。/etc/ssh/sshd_configPermitUserEnvironment yes

私が使用する/tmpのは、それが各マシンに対してローカルに保持されるためです。NFS 上のホーム ディレクトリでは、これがボトルネックとなり、複数のリモート ホストで複数のアプリを同時に起動すると一部のアプリが失敗する可能性があるという競合状態が発生します。

于 2016-01-27T16:23:59.440 に答える
2

私は部分的なものを思いつきましたが、それでも .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 ファイルがあるユーザーがいる場合、なぜ機能するのですか?

于 2014-03-05T08:17:17.647 に答える