ホストシステムに表示されるように、KVMゲストでX11アプリケーションを実行します。

ホストシステムに表示されるように、KVMゲストでX11アプリケーションを実行します。

あたかもホストシステムに示されているように、KVMゲストシステムでX11アプリケーションを実行する簡単な方法はありますか?

私はX11を使ってゲストにsshを渡すことができることを知っていますが、基本的なKVM / libvirtメソッドやより簡単な方法があるかどうか疑問に思います。

ベストアンサー1

SSHへのX11転送は、通常のポート転送よりも少し優れており、少なくとも必要なものを達成する最も簡単な方法です。ユーザーより。

欲しいなら技術的により簡単に言えば、X11がもともとどのように使用されるかを考える必要があります。

X11対応システムが多い環境では、NISを介してユーザー情報を一元管理でき、ホームディレクトリは専用ディスクサーバー上のNFS(一部の自動インストールを含む)を含む他のすべてのシステムと共有できます。さらに、すべてのコンピュータは互いのホスト名を解決できる必要があります。信頼できる内部ネットワークでは、(おそらく)X11サーバーの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/filexauth nmerge~/.Xauthority

xhost +(または、以下を使用してセキュリティチェックを完全に無効にするか、特定のリモートホストに対してのみ無効にすることができます。とても悪い考えです。:リモートホストに他のユーザーがいる場合は、X11セッション全体のすべてのキーボードおよびマウスイベントを監視するなど、xsnow危険、感染、またはより深刻な結果を招く可能性があります。xroach)

ただし、暗号化されていないX11プロトコルにはかなりのセキュリティホールがあることがわかりました。当時、米国の暗号通貨輸出法のために、世界はX11転送でSSHを使用し、X11サーバーのTCPポートを無効にすることにしました。 XサーバーはXorg -nolisten tcp <other options...>

最近、X.orgはこれを認識し、TCP受信ロジックを裏返しました。-nolisten tcpデフォルトでは、X11 サーバーの起動時に Linux ディストリビューションに対応するオプションがない場合、X11 サーバーのバージョンには実際に 1 つの明示的な-listen tcpオプションが必要なためです。古典的で安全でないX11 TCPリスナー。

それでは…はい、次のことができます。

  • ホストのX11サーバーでTCPリスナーを有効にします。
  • 仮想マシンがホストのIPアドレスを確認し、ホストのポート6000(= :0.0TCPのDISPLAYに対応)に接続できることを確認してください。
  • 仮想マシンがDISPLAY変数を指すように準備します。kvmhost:0.0
  • X11 認証 Cookie を VM に渡すために必要な手順を実行します。

これにより、X11は追加の技術的複雑さを最小限に抑えながら「古典的な方法」で動作することができます。しかし、はるかに複雑です。実際の設定使用するだけでなく、ssh -X virtualmachine古代のよく知られているさまざまな攻撃にさらされる可能性があります。

おすすめ記事