あたかもホストシステムに示されているように、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/file
xauth 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.0
TCPのDISPLAYに対応)に接続できることを確認してください。 - 仮想マシンが
DISPLAY
変数を指すように準備します。kvmhost:0.0
- X11 認証 Cookie を VM に渡すために必要な手順を実行します。
これにより、X11は追加の技術的複雑さを最小限に抑えながら「古典的な方法」で動作することができます。しかし、はるかに複雑です。実際の設定使用するだけでなく、ssh -X virtualmachine
古代のよく知られているさまざまな攻撃にさらされる可能性があります。
答え2
簡単なクリックデバイスtricjで行うことができます
-netdev tap,id=mynet0,ifname=qtap0,script=no,downscript=no -device e1000,netdev=mynet0,mac=fe:ed:be:ef:55:66
VMにいくつかのx互換バイナリをインストールした後、SSHを介してリモートで起動できます。
xhost +10.11.12.10 ;ssh -p 6666 [email protected] "LANG=de BROWSER=chromium-browser DISPLAY=10.11.12.11:0.0 dbus-run-session chromium-browser"
→注意してください。フルHD YouTubeは1.2+ Gbitの帯域幅を消費します。