KVMゲストシステムでホストシステムに表示される方法でX11アプリケーションを実行する簡単な方法はありますか?
X11転送でゲストにsshできることはわかっていますが、ネイティブのKVM/libvirtアプローチか、それよりも単純なものがあるのかと思っています。
SSHのX11転送は、一般的なポート転送よりも少し多く、おそらくユーザーのの観点からは、目的の機能を実現する最も簡単な方法です。
技術的にもっと単純にしたい場合は、X11が元々どのように使用されるように想定されていたかを理解する必要があります。
多くのX11対応コンピューターが存在する環境では、ユーザー情報はNISとホームディレクトリで集中管理され、専用のディスクサーバーからNFSを備えた他のすべてのコンピューターと共有されます(オートマウンターが少し投入されています)。すべてのコンピュータは、互いのホスト名を解決できる必要もあります。信頼できる内部ネットワークでは、(想定されていた)あなたはX = 11サーバーのTCPリスニングポートを無効にしません。
このような環境では、あるホストから別のホストに接続でき、DISPLAY
環境変数が適切に設定されていることを確認するだけで、リモートX11クライアントプログラムがローカルX11サーバーに直接接続できます。したがって、ローカルディスプレイに。ホームディレクトリはNFSと共有されるため、リモートホストとローカルホストの両方で同じ~/.Xauthority
が表示されます。
NISがなかったら?これはX11の問題ではありません。IDを実際には気にしません。 X11サーバーに接続しているクライアントが~/.Xauthority
ファイル(またはXAUTHORITY
環境変数が指すデフォルト以外のファイル)から正しいX11認証Cookieを提示できる限り、X11は機能します。ただし、UID/GID番号の割り当てを共有しないと、ホームディレクトリを共有できない場合があります。
共有ホームディレクトリがない場合その場合、通常、X11認証Cookieを渡す必要があります。これは、通常、たとえば、 xauth nextract /some/file :0.0
、次に/some/file
のコンテンツを取得し、何らかの方法を使用してリモートホストに転送し、xauth nmerge
を使用してリモートホストの~/.Xauthority
ファイルに追加します。
(または、xhost +
を使用して、セキュリティチェックを完全にまたは特定のリモートホストのみに対して無効にすることができます。しかし、これは非常に悪い考えであることが判明しました:リモートホストには他のユーザーがいて、xsnow
edを取得したり、xroach
に侵入したり、X11セッション全体のすべてのキーボードとマウスのイベントを監視したりすることができました。 )
しかし、暗号化されていないX11プロトコルは、かなり大きなセキュリティ上の弱点であることが判明しました。当時の米国の暗号輸出法があったため、世界はSSHをX11フォワーディングで使用し、TCP X11サーバーのポートを無効にすることを決定しました。これは、Xサーバーを参照するための標準になりました。 Xorg -nolisten tcp <other options...>
として開始。
ごく最近、X.orgはこれを認識し、TCPリスニングロジックを反転しました。Linuxディストリビューションがデフォルトで-nolisten tcp
オプションなしでX11サーバーを起動する場合、X11が原因である可能性があります。サーバーのバージョンでは、クラシックおよび安全でないX11 TCP=リスナーを有効にするために、明示的な-listen tcp
オプションが実際に必要です。
だから...はい、できます:
:0.0
に対応))DISPLAY
変数がkvmhost:0.0
を指すようにするこれにより、X11は「クラシックな方法」で機能し、技術的な複雑さが最小限に抑えられます。しかし、実際にssh -X virtualmachine
を使用するよりも実際にセットアップする方がはるかに複雑であり、さまざまな古い有名な攻撃。