Why is the connection between $DISPLAY on C and $DISPLAY on B LISTEN not ESTABLISHED, given that the X forwarding channel has been created?
Канал переадресации X еще не создан. Он создается только тогда, когда клиент подключается к порту 6010
на вашемC
(удаленном )компьютере. Соединение будет перенаправлено как отдельный канал через соединение ssh (, а не через другое соединение tcp между C
и B
). Чтобы отобразить все каналы, перенаправленные через ssh-соединение, вы должны использовать escape ~#
в начале строки:
$ ssh -X localhost
$ ~#
The following connections are open:
#0 client-session (t4 r0 i0/0 o0/0 fd 5/6 cc -1)
$ netstat | grep 6010
$ xterm &
$ ~#
The following connections are open:
#0 client-session (t4 r0 i0/0 o0/0 fd 5/6 cc -1)
#1 x11 (t4 r3 i0/0 o0/0 fd 8/8 cc -1)
$ netstat | grep 6010
tcp6 0 0 localhost:6010 localhost:39698 ESTABLISHED
tcp6 0 0 localhost:39698 localhost:6010 ESTABLISHED
When I run a X client on C, how can I verify that it is connected to the X server on B (the local machine)?
Я не знаю прямого способа проверить это. Я не знаю ни о каком базовом протоколе X11 или запросе расширения, который возвращает машину, на которой работает сервер X11. Вы должны сделать это шаг за шагом :сначала проверьте, подключен ли клиент X11 к серверу пересылки, затем куда он перенаправляет соединение и т. д.