-Xなしでマシンにsshを接続した後、ssh -Xのように動作するように$ DISPLAYを変更できますか?

-Xなしでマシンにsshを接続した後、ssh -Xのように動作するように$ DISPLAYを変更できますか?

ssh機械なしで-Xいくつかの設定(例$DISPLAY:)を変更してこのように動作させることはできますかssh -X?そうでなければなぜですか?ありがとうございます。

答え1

X11転送が有効になっている2番目の接続を作成し、最初の接続DISPLAYで2番目の接続の環境変数を使用することもできます。

最初のウィンドウで:

$ ssh user@host
user@host$ ...

2番目のウィンドウで:

$ ssh -Y user@host 'echo $DISPLAY; while sleep 3600; do :; done'
localhost:10.0

最初のウィンドウに戻る:

user@host$ export DISPLAY=localhost:10.0
user@host$ xterm

残念ながらssh、起動されたプロセス/セッションやリモートシステムで実行されているユーザーへのX11(または他の)配信は含まれていません(資格情報を確認しないUnixソケットを使用したり、名前空間を使用して)。これらの転送は、リモートコンピュータの誰でも接続できるシンプルなTCPリスニングソケットです。 X11 転送のすべてのセキュリティは X11 認証に依存します。

X11手動配信

マンページには以下がsshd_config(5)挙げられます。

X11転送を無効にしても、ユーザーは常に自分のフォワーダをインストールできるため、X11トラフィック転送はブロックされません。

この操作を手動で行う方法は次のとおりです。

まず、x11認証メカニズム[1]を迂回するホストまたはユーザーベースのアクセス制御を無効にする必要があります。

$ xhost $(xhost | sed -n /:/s/^/-/p)
access control enabled, only authorized clients can connect

DISPLAY=:0次に、ローカルコンピュータに認証情報を表示します。

$ xauth list :0
ohzd/unix:0  MIT-MAGIC-COOKIE-1  a86982ddce0c1e1c1a8c5e8b2846e43b

X11転送なしでリモートシステムに接続する:

$ ssh user@hzy64
user@hzy64's password:
[motd snipped]

次のコマンドラインを開き、ポートからディスプレイに対応するUnixソケットへのリモート転送を~C追加します。6000+43:0

hzy64$~C
ssh> -R 6043:/tmp/.X11-unix/X0
Forwarding port.

環境変数を設定し$DISPLAY、ローカルからリモートシステムに認証情報を追加します。

hzy64$ export DISPLAY=localhost:43
hzy64$ xauth add $DISPLAY . a86982ddce0c1e1c1a8c5e8b2846e43b
xauth:  file /home/user/.Xauthority does not exist

これで行く準備ができました:

hzy64$ xterm

[1]間違った道に行ったのでバグ修正、Debianでは、ユーザーベースのアクセス制御がデフォルトで有効になっています/etc/X11/Xsession.d/35x11-common_xhost-local。さらに悪いことは、XWaylandで基本的に使用できる唯一の機能です。閉じることができません。 X11プロトコル(たとえばxscope)をプロキシするすべてのプログラムは、X11サーバーで脆弱性を開こうとしない限り、独自のx11認証Cookieチェック(sshと同様)を実行する必要があります。

関連情報