セッションシャドウイング
セッションシャドウイングにより、ドメイン管理者はイントラネット内でユーザーのICA®セッションを表示できます。この機能はnoVNCを使用してICAセッションに接続します。
注:
この機能を使用するには、
Citrix Director7.16以降を使用してください。
インストールと構成
依存関係
セッションシャドウイングには、python-websockifyとx11vncの2つの新しい依存関係が必要です。Linux VDAのインストール後に、python-websockifyとx11vncを手動でインストールしてください。
Amazon Linux2の場合:
python-websockifyとx11vnc(x11vncバージョン0.9.13以降)をインストールするには、次のコマンドを実行します。
sudo pip3 install websockify
sudo yum install x11vnc
<!--NeedCopy-->
RHEL 9.x/8.xおよびRocky Linux 9.x/8.xの場合:
python-websockifyとx11vnc(x11vncバージョン0.9.13以降)をインストールするには、次のコマンドを実行します。
sudo pip3 install websockify
sudo yum install x11vnc
<!--NeedCopy-->
EPELおよびCodeReady Linux Builderリポジトリを有効にして、x11vncを解決します。
dnf install -y --nogpgcheck https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
subscription-manager repos --enable "codeready-builder -for-rhel-8-x86_64-rpms"
<!--NeedCopy-->
Ubuntuの場合:
python-websockifyとx11vnc(x11vncバージョン0.9.13以降)をインストールするには、次のコマンドを実行します。
sudo pip3 install websockify
sudo apt-get install x11vnc
<!--NeedCopy-->
SUSEの場合:
まず、YaSTまたは次のSUSEConnectコマンドを使用して、「SUSE Linux Enterprise Workstation Extension 15 SP6」モジュールを有効にします。
suseconnect -p sle-we/15.6/x86_64 -r <regcode>
<!--NeedCopy-->
詳細については、SUSEドキュメントを参照してください:https://documentation.suse.com/en-us/sles/15-SP6/html/SLES-all/article-modules.html。
次に、python-websockifyとx11vnc(x11vncバージョン0.9.13以降)をインストールするには、次のコマンドを実行します。
sudo pip3 install websockify
sudo zypper install x11vnc
<!--NeedCopy-->
Debian 12の場合:
python-websockifyとx11vnc(x11vncバージョン0.9.13以降)をインストールするには、次のコマンドを実行します。
apt install python3-websockify
sudo apt-get install x11vnc
<!--NeedCopy-->
Debian 11の場合:
-
python-websockifyとx11vnc(x11vncバージョン0.9.13以降)をインストールするには、次のコマンドを実行します。
sudo pip3 install websockify
sudo apt-get install x11vnc
<!--NeedCopy-->
ポート
セッションシャドウイング機能は、Linux VDAからCitrix Directorへの接続を確立するために、6001~6099の範囲から利用可能なポートを自動的に選択します。そのため、同時にシャドウイングできるICAセッションの数は99に制限されます。特にマルチセッションシャドウイングの場合、要件を満たすのに十分なポートが利用可能であることを確認してください。
レジストリ
次の表に関連レジストリを示します。
| レジストリ | 説明 | デフォルト値 |
|---|---|---|
| EnableSessionShadowing | セッションシャドウイング機能を有効または無効にします | 1(有効) |
| ShadowingUseSSL | Linux VDAとCitrix Director間の接続を暗号化するかどうかを決定します | 0(無効) |
レジストリ値を変更するには、Linux VDAでctxregコマンドを実行します。たとえば、セッションシャドウイングを無効にするには、次のコマンドを実行します。
/opt/Citrix/VDA/bin/ctxreg update -k "HKLM\Software\Citrix\VirtualDesktopAgent" -v "EnableSessionShadowing" -d "0x00000000"
<!--NeedCopy-->
SSL
-
Linux VDAとCitrix Director間のnoVNC接続はWebSocketプロトコルを使用します。セッションシャドウイングの場合、
ws://またはwss://のどちらが選択されるかは、前述の「ShadowingUseSSL」レジストリによって異なります。デフォルトではws://が選択されます。ただし、セキュリティ上の理由から、wss://を使用し、各Citrix Directorクライアントと各Linux VDAサーバーに証明書をインストールすることをお勧めします。Citrixは、ws://を使用したLinux VDAセッションシャドウイングに対するいかなるセキュリティ責任も負いません。 -
SSLを有効にするには、次のコマンドを実行します。
- /opt/Citrix/VDA/bin/ctxreg update -k "HKLM\Software\Citrix\VirtualDesktopAgent" -v "ShadowingUseSSL" -d "0x00000001"
<!--NeedCopy-->
サーバーおよびルートSSL証明書の取得
証明書は、信頼された認証局 (CA) によって署名されている必要があります。
SSLを構成する各Linux VDAサーバーには、個別のサーバー証明書(キーを含む)が必要です。サーバー証明書は特定のコンピューターを識別するため、各サーバーの完全修飾ドメイン名(FQDN)を知っている必要があります。便宜上、ドメイン全体にワイルドカード証明書を使用することを検討してください。
Linux VDAと通信する各Citrix Directorクライアントにもルート証明書が必要です。ルート証明書は、サーバー証明書を発行するのと同じCAから入手できます。
以下のCAからサーバーおよびクライアント証明書をインストールできます。
- オペレーティングシステムにバンドルされているCA
- エンタープライズCA(組織がアクセスを許可しているCA)
- オペレーティングシステムにバンドルされていないCA
証明書を取得するために組織のセキュリティチームがどの方法を要求しているかを確認してください。
重要:
- サーバー証明書の共通名(Common Name)は、Linux VDAの正確なFQDNであるか、少なくとも正しいワイルドカードとドメイン文字である必要があります。たとえば、vda1.basedomain.comまたは*.basedomain.com。
- SHA1およびMD5を含むハッシュアルゴリズムは、一部のブラウザーがサポートするにはデジタル証明書の署名として弱すぎます。そのため、SHA-256が最小標準として指定されています。
- Chromeは、自己署名SSL証明書を安全でないと見なし、受け入れを停止しました。生成された証明書にSAN(subjectAltName)フィールドがないため、
NET::ERR_CERT_COMMON_NAME_INVALIDエラーが発生します。この問題を解決するには、SANフィールドを含む拡張属性(X509 v3拡張)を持つ証明書を提供してください。
各Citrix Directorクライアントへのルート証明書のインストール
セッションシャドウイングはIISと同じレジストリベースの証明書ストアを使用するため、IISまたはMicrosoft Management Console(MMC)の証明書スナップインを使用してルート証明書をインストールできます。CAから証明書を受け取ると、IISでWebサーバー証明書ウィザードを再起動でき、ウィザードが証明書をインストールします。または、MMCを使用してコンピューター上の証明書を表示およびインポートし、スタンドアロンスナップインとして証明書を追加することもできます。Internet ExplorerとGoogle Chromeは、オペレーティングシステムにインストールされている証明書をデフォルトでインポートします。Mozilla Firefoxの場合、証明書マネージャーの [認証局] タブでルートCA証明書をインポートする必要があります。
各Linux VDAサーバーへのサーバー証明書とそのキーのインストール
サーバー証明書には「shadowingcert.*」、キーファイルには「shadowingkey.*」という名前を付けます(*は形式を示します。たとえば、shadowingcert.pemおよびshadowingkey.key)。サーバー証明書とキーファイルをパス /etc/xdl/shadowingssl の下に置き、ctxsrvr のみが読み取りアクセス権を持つように、制限された権限で適切に保護してください。名前またはパスが正しくないと、Linux VDAは特定の証明書またはキーファイルを見つけることができず、Citrix Directorとの接続障害が発生します。コマンドは次のとおりです。
cp <vda's-public-key> /etc/xdl/shadowingssl/shadowingcert.pem
cp <vda's-server-private-key> /etc/xdl/shadowingssl/shadowingkey.key
sudo chown ctxsrvr:ctxadm /etc/xdl/shadowingssl/shadowingcert.pem
sudo chown ctxsrvr:ctxadm /etc/xdl/shadowingssl/shadowingkey.key
<!--NeedCopy-->
使用方法
Citrix Directorから、ターゲットセッションを見つけ、[セッションの詳細] ビューで [シャドウ] をクリックして、Linux VDAにシャドウイング要求を送信します。

接続が初期化されると、ICAセッションクライアント(Citrix Directorクライアントではない)に確認メッセージが表示され、ユーザーにセッションをシャドウイングする許可を求めます。

ユーザーが [はい] をクリックすると、Citrix Director側にウィンドウが表示され、ICAセッションがシャドウイングされていることを示します。
使用方法について詳しくは、「Citrix Directorのドキュメント」を参照してください。
制限事項
- VDAがドメインに参加しており、認証にAzure Active Directory(AAD)を使用してMicrosoft Azureでホストされている場合、セッションシャドウイング機能は機能しません。
- セッションシャドウイングはイントラネットでのみ使用するように設計されています。Citrix Gateway経由で接続している場合でも、外部ネットワークでは機能しません。Citrixは、外部ネットワークでのLinux VDAセッションシャドウイングに関するいかなる責任も負いません。
- セッションシャドウイングが有効になっている場合、ドメイン管理者はICAセッションを表示することしかできず、書き込みや制御の権限はありません。
- 管理者が
Citrix Directorから [シャドウ] をクリックすると、ユーザーにセッションをシャドウイングする許可を求める確認メッセージが表示されます。セッションは、セッションユーザーが許可を与えた場合にのみシャドウイングできます。 - 前述の確認メッセージには20秒のタイムアウト制限があります。時間が経過すると、シャドウイング要求は失敗します。
- 1つのセッションは1人の管理者のみがシャドウイングできます。たとえば、管理者Bが管理者Aがシャドウイングしているセッションに対してシャドウイング要求を送信すると、ユーザーの許可を得るための確認メッセージがユーザーデバイスに再度表示されます。ユーザーが同意した場合、管理者Aのシャドウイング接続は停止し、管理者Bのために新しいシャドウイング接続が構築されます。管理者が同じセッションに対して別のシャドウイング要求を送信した場合も、新しいシャドウイング接続を構築できます。
- セッションシャドウイングを使用するには、
Citrix Director7.16以降をインストールしてください。 -
Citrix Directorクライアントは、IPアドレスではなくFQDNを使用してターゲットLinux VDAサーバーに接続します。したがって、Citrix DirectorクライアントはLinux VDAサーバーのFQDNを解決できる必要があります。
トラブルシューティング
セッションシャドウイングが失敗した場合は、Citrix DirectorクライアントとLinux VDAの両方でデバッグを行ってください。
Citrix Directorクライアントでの操作
ブラウザーの開発者ツールを使用して、[コンソール] タブで出力ログを確認します。または、[ネットワーク] タブでShadowLinuxSession APIの応答を確認します。ユーザーの許可を得るための確認メッセージが表示されるものの、接続の確立に失敗する場合は、VDAのFQDNを手動でpingして、Citrix DirectorがFQDNを解決できることを確認してください。wss://接続に問題がある場合は、証明書を確認してください。
Linux VDAでの操作
-
/var/log/xdl/vda.logファイルで手がかりを確認します。 -
/var/xdl/sessionshadowing.shファイルを編集し、「logFile」変数を変更して、Directorからのセッションシャドウイング中に手がかりを追跡できるログファイルを指定します。 -
また、noVNC接続で証明書が正しく機能するかどうかを手動で確認することもできます。
-
ps aux | grep xorg を実行して、現在のセッションのXorgディスプレイ番号 $display-num を見つけます(例::3)。
-
次のコマンドを実行してx11vncサーバーを起動し、受信接続を待ちます。
注:
次のコマンドを実行する前に、$passwd、$port、$display-num の変数を設定してください。
runuser -l "ctxsrvr" -s /bin/bash -c "websockify <port> -v --cert /etc/xdl/shadowingssl/shadowingcert.pem --key /etc/xdl/shadowingssl/shadowingkey.key -- x11vnc -viewonly -shared -passwd $passwd -rfbport $port -display $display-num -many -o /var/log/xdl/x11vnc.log" <!--NeedCopy--> -
noVNCを使用してSSLモードを確認するために接続を試みます。VDAのFQDNとポート番号を入力します。この例では、ポート番号は6009です。

-
VDA上のWebsockifyによって出力されたエラー、またはクライアント上のブラウザーによって報告されたエラーを解決します。
接続確立中の主要なチェックポイント:
- セッションシャドウイングがポートを開くのを妨げるファイアウォールの制限がないか確認します。
- SSLシナリオの場合、証明書とキーファイルに適切な名前が付けられ、正しいパスの下に配置されていることを確認します。
- 新しいシャドウイング要求のために6001~6099の間に十分なポートが残っていることを確認します。
-
openssl x509 -in shadowingcert.pem -text -nooutを実行して、CNおよびSANフィールドに特に注意を払いながら、証明書が正しく構成されていることを確認します。
-
-
RHEL 8では、
rebind.soが見つからないという問題が発生する可能性があります。この問題を解決するには、次のコマンドを実行します。``` ln -s /usr/bin/rebind.so /usr/local/bin/rebind.so <!--NeedCopy--> ```