Linux Virtual Delivery Agent

Xauthority

Linux VDAは、対話型リモート処理のためにX11ディスプレイ機能(xtermgvimを含む)を使用する環境をサポートしています。この機能は、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番号のいずれかを含む.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ファイルに保存されているディスプレイ番号であり、XAUTHORITYXauthorityのファイルパスです。例については、次のコマンドを参照してください。

     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環境変数が正しく設定されると、GUIはXServerデスクトップに自動的に表示されます。

トラブルシューティング

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

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

    ps aux | grep -i xorg
    <!--NeedCopy-->
    

    このコマンドは、Xorgプロセスと、起動時にXorgに渡されたパラメーターを表示します。別のパラメーターは、どの.Xauthorityファイルが使用されているかを表示します。例:

    /var/xdl/xauth/.Xauthority110
    <!--NeedCopy-->
    

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

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

  3. Cookieが同じである場合は、Linux VDAのIPアドレスと公開デスクトップのディスプレイ番号を使用して、リモートディスプレイポートのアクセシビリティを確認します。

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

    telnet 10.158.11.11 6160
    <!--NeedCopy-->
    

    ポート番号は6000 + <ディスプレイ番号>の合計です。

    このtelnet操作が失敗した場合、ファイアウォールが要求をブロックしている可能性があります。

Xauthority