`ssh -X`の後で `$DISPLAY`でマッピングを見つける方法は?

`ssh -X`の後で `$DISPLAY`でマッピングを見つける方法は?

マシンBからマシンCにリモートでアクセスします。

$ ssh -X t@C
$ echo $DISPLAY
localhost:10.0

$DISPLAYCからBへのマッピングを見つけて確認する方法は$DISPLAY? Cで次のコマンドで実行できますか?

$ netstat -a | grep 6010
tcp        0      0 localhost:6010          0.0.0.0:*               LISTEN     
tcp6       0      0 ip6-localhost:6010      [::]:*                  LISTEN 

X転送チャネルが作成されたが、$DISPLAYCとB LISTENの間の接続が確立されないのはなぜですか?$DISPLAY

CでXクライアントを実行すると、B(ローカルコンピュータ)のXサーバーに接続されていることをどのように確認できますか? X クライアントを実行する前よりも下でポート 6010 に関する詳細情報を取得できるのはなぜですか。

$ eog &
[1] 1129
$ netstat -a | grep 6010
tcp        0      0 localhost:6010          0.0.0.0:*               LISTEN     
tcp        0      0 localhost:59782         localhost:6010          TIME_WAIT  
tcp        0      0 localhost:59780         localhost:6010          ESTABLISHED
tcp        0      0 localhost:59778         localhost:6010          TIME_WAIT  
tcp        0      0 localhost:6010          localhost:59780         ESTABLISHED
tcp6       0      0 ip6-localhost:6010      [::]:*                  LISTEN

ありがとうございます。

ベストアンサー1

「Cの$ DISPLAYをBの$ DISPLAYにマッピングする」とはどういう意味ですか?

明らかにgrepCから何かが欠けているので、Cでは「ポート番号= 6010」に関連するソケットのみを見ることができます。 Cの他の接続またはリスニングソケットが切断されましたgrep

以前は実行中のXクライアントがなく、sshd(ポート番号= 6010)に接続していたため、どの接続も表示できませんでした。その後、Xクライアントが実行され、sshd(ポート番号= 6010)に接続されているため、より多くの情報を表示できます。番号=6010)。

SSHトンネルを使用している場合は、ネットワークトポロジを理解する必要があります。 BのSSHクライアントはこれを要求するため、CのSSHサーバーはポート6010でリッスンする新しいソケットを開きます。 B の SSH クライアントと C の SSH サーバーの間にはまだ SSH トンネルが確立されています (特殊構成に sshd が存在しない場合はポート番号 = 22)、終了した後grepはこのトンネル接続を表示できません。 CのXクライアントはsshd(ポート番号= 6010)に接続し、sshdはSSHトンネルを使用してこれらの接続を多重化し、それをBのXサーバーに転送します。

「Cの$ DISPLAYとBの$ DISPLAYの間の接続」は実際には存在せず、SSHトンネルはC:22とaddress_of_the_SSH_client_on_Bの間に生成されます。そして接続なので、LISTENING状態では不可能です。

より多くの情報を表示するには、netstat -ap使用しないでください。grep

この回答で言及されているすべての接続は、エンドユーザーの視点の「接続」ではなく、カーネルの観点からの実際のTCP接続を意味します。

おすすめ記事