Xauthorityの構成

X11ディスプレイ機能(xtermとgvimを含む)で対話型のリモート制御を使用する環境は、Linux VDAでサポートされています。この機能は、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

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

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}
    

    注:

    XAUTHORITY環境変数が設定されていない場合、~/.Xauthorityファイルがデフォルトで使用されます。

  • 共有ホームディレクトリをマウントすることにより.XauthorityファイルをXClientに渡す

    簡単な方法は、ログオンユーザーの共有ホームディレクトリをマウントすることです。Linux VDAがICAセッションを起動すると、ログオンユーザーのホームディレクトリでXauthorityファイルが作成されます。このホームディレクトリがXClientと共有される場合、ユーザーがこの.Xauthorityファイルを手動でXClientに転送する必要はありません。DISPLAYおよびXAUTHORITY環境変数を正しく設定した後、XServerでGUIが自動的に表示されます。

トラブルシューティング

Xauthorityが機能しない場合は、次のトラブルシューティング手順に従ってください:

  1. root特権を持つ管理者として、すべてのXorg Cookieを取得します:

    ps aux | grep -i xorg
    

    このコマンドは、起動中Xorgに渡されるXorgプロセスとパラメーターを表示します。もう1つのパラメーターは、どの.Xauthorityファイルが使用されるかを表示します。次に例を示します。

    /var/xdl/xauth/.Xauthority110
    

    Xauthコマンドを使用して、Cookieを表示します:

    Xauth -f /var/xdl/xauth/.Xauthority110
    
  2. Xauthコマンドを使用して、~/.Xauthorityに含まれるCookieを表示します。同じ表示番号の場合、表示されるCookieはXorgおよびXClientの.Xauthorityファイルで同じである必要があります。

  3. Cookieが同じあれば、リモートディスプレイポートがLinux VDAのIPアドレス(例:10.158.11.11)と公開デスクトップの表示番号(例:160)を使用してアクセスできるかを確認します。

    XClientマシンで次のコマンドを実行します。

    telnet 10.158.11.11 6160
    

    ポート番号は、6000 + の合計です。表示番号>

    telnetの操作が失敗すると、ファイアウォールが要求をブロックすることがあります。

Xauthorityの構成