Xauthorityの構成
Linux VDAは、対話型のリモート制御でX11ディスプレイ機能(xterm
とgvim
を含む)を使用する環境をサポートしています。この機能は、XClientとXServer間のセキュリティで保護された通信を確保するために必要なセキュリティメカニズムを提供します。
このセキュリティで保護された通信の権限を保護するには、以下の2つの方法があります。
- Xhost。デフォルトでは、XhostコマンドはローカルホストXClientとXServerの通信のみを許可します。リモートXClientのXServerへのアクセスを許可すると、特定のマシンで権限を付与するためにXhostコマンドが実行される必要があります。あるいは、xhost + を使用してXClientにXServerへの接続を許可することもできます。
-
Xauthority。
.Xauthority
ファイルは、各ユーザーのホームディレクトリにあります。このファイルは、XServerの認証の際にxauthが使用するCookieに資格情報を保存するために使用されます。XServerインスタンス(Xorg)が起動されるときに、特定のディスプレイへの接続を認証するためにこのCookieが使用されます。
機能
Xorgが起動されると、.Xauthority
ファイルはXorgに渡されます。この.Xauthority
ファイルには次の要素が含まれます:
- 表示番号
- リモート要求プロトコル
- Cookie番号
xauthコマンドを使用して、このファイルを参照できます。例:
# xauth -f ~/.Xauthority
# > list
# > us01msip06:107 MIT-MAGIC-COOKIE-1 fb228d1b695729242616c5908f11624b
<!--NeedCopy-->
XClientがリモートでXorgに接続する場合、2つの前提条件を満たす必要があります:
- DISPLAY環境変数をリモートXServerに設定します。
- XorgでCookie番号の1つを含む
.Xauthority
を取得します。
Xauthorityの構成
リモートX11ディスプレイ用にLinux VDA上でXauthorityを有効にするには、次の2個のレジストリキーを作成する必要があります:
sudo /opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Control\Citrix\Xorg" -t "REG_DWORD" -v "XauthEnabled" -d "0x00000001" --force
sudo /opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Control\Citrix\Xorg" -t "REG_DWORD" -v "ListenTCP" -d "0x00000001" --force
<!--NeedCopy-->
Xauthorityに有効にしてから、手動によるか共有ホームディレクトリをマウントすることで.Xauthority
ファイルをXClientに渡します。
-
.Xauthority
ファイルをXClientに手動で渡すICAセッションを起動した後、Linux VDAはXClientの
.Xauthority
ファイルを生成し、ログオンユーザーのホームディレクトリにファイルを保存します。この.Xauthority
ファイルをリモートXClientマシンにコピーし、DISPLAYおよびXAUTHORITY環境変数を設定できます。DISPLAYは.Xauthority
ファイルに保存した表示番号で、XAUTHORITYはXauthorityのファイルパスです。たとえば、次のコマンドを表示します:export DISPLAY={Display number stored in the Xauthority file} export XAUTHORITY={the file path of .Xauthority} <!--NeedCopy-->
注:
XAUTHORITY環境変数が設定されていない場合、
~/.Xauthority
ファイルがデフォルトで使用されます。 -
共有ホームディレクトリをマウントすることにより
.Xauthority
ファイルをXClientに渡す簡単な方法は、ログオンユーザーの共有ホームディレクトリをマウントすることです。Linux VDAがICAセッションを起動すると、ログオンユーザーのホームディレクトリで
.Xauthority
ファイルが作成されます。このホームディレクトリがXClientと共有される場合、ユーザーがこの.Xauthority
ファイルを手動でXClientに転送する必要はありません。DISPLAYおよびXAUTHORITY環境変数を正しく設定した後、XServerでGUIが自動的に表示されます。
トラブルシューティング
Xauthorityが機能しない場合は、次のトラブルシューティング手順に従ってください:
-
root特権を持つ管理者として、すべてのXorg Cookieを取得します:
ps aux | grep -i xorg <!--NeedCopy-->
このコマンドは、起動中Xorgに渡されるXorgプロセスとパラメーターを表示します。もう1つのパラメーターは、どの
.Xauthority
ファイルが使用されるかを表示します。例:/var/xdl/xauth/.Xauthority110 <!--NeedCopy-->
Xauthコマンドを使用して、Cookieを表示します:
Xauth -f /var/xdl/xauth/.Xauthority110 <!--NeedCopy-->
-
Xauthコマンドを使用して、
~/.Xauthority
に含まれるCookieを表示します。同じ表示番号の場合、表示されるCookieはXorgおよびXClientの.Xauthority
ファイルで同じである必要があります。 -
Cookieが同じあれば、リモートディスプレイポートがLinux VDAのIPアドレス(例:10.158.11.11)と公開デスクトップの表示番号(例:160)を使用してアクセスできるかを確認します。
XClientマシンで次のコマンドを実行します。
telnet 10.158.11.11 6160 <!--NeedCopy-->
ポート番号は、6000 + 表示番号の合計です。
telnetの操作が失敗すると、ファイアウォールが要求をブロックすることがあります。