ポート転送によるSSH X11転送

ポート転送によるSSH X11転送

SSH X11転送とポート転送について質問があります。

私は持っています:

  • Ubuntu Desktopを実行している2台のコンピュータ(同じ場所とローカルネットワークにはありません)はDesktop1IPアドレスを使用して電話をかけIP1、他のコンピュータはですDesktop2IP2
  • IPアドレスを持つVPS(Ubuntuサーバー)1つIP_VPS

D1 <------> VPS <------> D2

Desktop1次のコマンドを実行しました。

ssh -XC -R 8022:localhost:22 vps_user@IP_VPS

次に、次のコマンドを実行しますDesktop2

ssh -XC vps_user@IP_VPS

リンクされたSSHシェルで次のように実行しました。

ssh -XC desktop_user@localhost -p 8022

(目的はを介してに接続するDesktop1ことDesktop2ですVPS

正常に接続されましたDesktop1。ただし、リンクされたSSHシェル(たとえば)でGUIアプリケーションを実行しようとすると、geditウィンドウはに表示されずDesktop2に表示されますDesktop1。に渡されると予想しましたDesktop2

何か間違って理解したことがあれば説明してください。ありがとうございます!

答え1

UbuntuはX11の代わりにWaylandを使用することができ、これによりX11転送を使用できなくなります。

Desktop1のコマンドの目的は、ssh将来のインバウンド接続を許可するためにリモートローカルポート転送を設定することであるため、その接続にはX11転送オプションはまったく必要ありません。しかし、害を及ぼすべきではありません。

それ以外の場合、コマンドはデフォルトで正しいように見えます。 X11アプリケーションはDesktop2にウィンドウを表示するか、$DISPLAY未定義のエラーを報告する必要があります。

唯一の方法はX11DISPLAY=:0VPS-> Desktop1で起動されたGUIアプリケーションは、X11アプリケーションを起動する前にDesktop1に明示的に設定されている場合、Desktop1自体に表示されます。 (desktop_user@Desktop1最初のSSH接続用にローカルGUIセッションが開かれた可能性があるため、Desktop_userにはローカルX11ディスプレイの有効なセッションCookieが提供されました。)

しかしそれはただの事実です。Desktop1が実際にX11を使用するように設定されている場合。 Ubuntu用GNOMEデスクトップWaylandを使用している可能性があります、これはX11プロトコルを完全にブロックします。geditX11の代わりにWaylandプロトコルが使用されている場合、このDISPLAY変数は意味がなく、代わりにDesktop1のローカルモニタに表示されます。

Waylandでは、クライアント、ディスプレイシンセサイザ(最も近いX11サーバー)、およびカーネル/ディスプレイハードウェア間の共有メモリバッファはオプションではないため、WaylandプロトコルはX11などのリモートアプリケーションを許可しません。 VNCやRDPなどのGUIリモートソリューションは、Waylandで個別に実装できます。

たとえば、実際のX11専用アプリケーションでテストできますかxterm?または#WaylandEnable=false、でコメントアウトされた行を見つけて/etc/gdm3/custom.confコメントアウトを解除し、Desktop1を再起動してDesktop1のGUIをX11専用モードに設定します。

(UbuntuでWaylandを無効にする方法の詳細:https://linuxconfig.org/how-to-enable-disable-wayland-on-ubuntu-22-04-desktop)

関連情報