Linux Virtual Delivery Agent

Xauthority

Linux VDA は、インタラクティブなリモート処理のために X11 ディスプレイ機能(xtermgvim を含む)を使用する環境をサポートしています。この機能は、XClient と XServer 間の安全な通信を確保するために必要なセキュリティメカニズムを提供します。

  • この安全な通信の許可を確保するには、次の2つの方法があります。

  • Xhost。デフォルトでは、Xhost はローカルホストの XClient のみが XServer と通信することを許可します。リモートの XClient が XServer にアクセスすることを許可する場合は、特定のマシンで Xhost コマンドを実行して許可を与える必要があります。または、xhost + を使用して、任意の XClient が XServer に接続することを許可することもできます。
  • Xauthority.Xauthority ファイルは、各ユーザーのホームディレクトリにあります。これは、xauth による XServer の認証に使用されるクッキーに資格情報を保存するために使用されます。XServer インスタンス (Xorg) が起動されると、その特定のディスプレイへの接続を認証するためにクッキーが使用されます。

  • 動作原理

Xorg が起動すると、.Xauthority ファイルが Xorg に渡されます。この .Xauthority ファイルには、次の要素が含まれています。

  • ディスプレイ番号
  • リモートリクエストプロトコル
  • クッキー番号

  • このファイルは xauth コマンドを使用して参照できます。例:
# xauth -f ~/.Xauthority

# > list

# > us01msip06:107  MIT-MAGIC-COOKIE-1  fb228d1b695729242616c5908f11624b
<!--NeedCopy-->

XClient が Xorg にリモートで接続する場合、次の2つの前提条件を満たす必要があります。

  • DISPLAY 環境変数をリモートの XServer に設定します。
  • Xorg 内のクッキー番号のいずれかを含む .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 クッキーを取得します。

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

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

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

    Xauth コマンドを使用してクッキーを表示します。

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

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

    たとえば、XClient マシンで次のコマンドを実行します。

    telnet 10.158.11.11 6160
    <!--NeedCopy-->
    

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

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

Xauthority