SSHセッションのXAUTHORITY環境変数が空です。

SSHセッションのXAUTHORITY環境変数が空です。

Linux ホストに SSH 接続を入力すると、XAUTHORITY 環境変数は設定されません。を実行すると、すぐにコマンドを追加しsudo -bないと接続が切断されますnohup。この場合、ジョブは失敗して報告されます。X11 connection rejected because of wrong authentication.

回避策として値を手動で$HOME/.Xauthority

この変数は通常自動的に設定されます。変数を希望の方法(適切な時間に正しいプロセスを介して)に設定するにはどうすればよいですか?

ベストアンサー1

Xauthorityファイルがある場合、環境変数はデフォルトパスであるため$HOME/.Xauthority必要ありません。 X11ライブラリは自動的にこれを確認する必要があります。XAUTHORITY$HOME/.Xauthority

その後、sudoX11を使用してルートに切り替えると、X11セッションを維持してアクセスがより困難になります。これは、環境変数を維持し、ルートがどこからでもXauthorityを読み取ることができるというsudo問題ではないからです。ある時点で、XAUTHORITY値を次に設定する必要があります。 Xauthority ファイルの実際の場所を識別します。必要なプロセスが始まる前に設定するだけで、設定方法は重要ではありません。DISPLAYXAUTHORITY

変数が保持されるように設定されている場合は、sudo以前の元のユーザーアカウントなど、ログインスクリプトで次のように明示的に設定することでXAUTHORITYこの問題を解決できます(設定されている場合)。XAUTHORITYsudoDISPLAY

if [ "$DISPLAY" != "" ] && [ "$XAUTHORITY" = "" ]; then
    export XAUTHORITY=$HOME/.Xauthority
fi

sudoまたは、保存されていないXAUTHORITY場合、または設定が維持されたくない場合は、次のコードsudoを内部に配置することもできます/etc/bash.bashrc~/.bashrcまたはコマンドで実行されるシェルで実行されるスクリプトsudo)。

if [ "$SUDO_USER" != "" ] && [ "$DISPLAY" != "" ]; then
    export XAUTHORITY=$(getent passwd "${SUDO_USER}" | cut -d : -f 6)/.Xauthority
fi

おすすめ記事