У меня была такая же проблема. Проблема может быть в версии, проверьте версию
[root@linux ~]# rpm -qi targetcli | grep -i version
Version : 2.1.fb41
fb41 описывает версию 41.
[root@linux ~]# yum -y remove targetcli
[root@linux ~]# wget -c ftp://bo.mirror.garr.it/1/slc/centos/7.1.1503/os/x86_64/Packages/targetcli-2.1.fb37-3.el7.noarch.rpm
[root@linux ~]# yum install targetcli-2.1.fb37-3.el7.noarch.rpm
[root@linux ~]# targetcli
Надеемся, что ссылка выше поможет вам.
"отображение $DISPLAY на C в $DISPLAY на B" что это значит?
Очевидно, grep
что-то у вас на C отсутствует, поэтому вы видите только сокеты на C, которые включают «номер порта = 6010». Другое соединение или сокет прослушивания на C отключены grep
.
Раньше вы не видели никаких подключений, потому что не было запущено ни одного X-клиента, подключенного к sshd (номер порта = 6010 ), и дополнительная информация после того, как вы теперь запускаете X-клиент, который подключен к вашему sshd (порту num=6010 ).
При использовании туннеля SSH необходимо знать топологию сети. Сервер SSH на C открывает новый сокет, который прослушивает порт 6010, потому что его запросил клиент SSH на B. Туннель ssh по-прежнему установлен между клиентом SSH на B и сервером SSH на C (, порт num=22, если sshd специально не настроен ), вы не видите это туннельное соединение, так как вы grep
его отключили. X-клиенты на C подключаются к sshd (номер порта = 6010 ), затем sshd мультиплексирует эти соединения с помощью ssh-туннеля и перенаправляет эти соединения на X-сервер на B.
«Соединение между $DISPLAY на C и $DISPLAY на B» на самом деле не существует, туннель ssh создается между C :22 и адресом _из __SSH _клиент _на _B. И поскольку это соединение, это невозможно в состоянии ПРОСЛУШИВАНИЯ.
используйте netstat -ap
без grep
для просмотра дополнительной информации.
Все соединения, упомянутые в этом ответе, означают настоящее TCP-соединение с точки зрения ядра, а не «соединения» с точки зрения конечных -пользователей.
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 к серверу пересылки, затем куда он перенаправляет соединение и т. д.