Позвольте мне дать резюме моей спецификации проекта. У меня есть сервер Windows и куча клиентов Debian в одной локальной сети, на машинах Debian нет системы x Window, они связаны с использованием командной строки. Я запускаю приложение QT при запуске системы, поэтому пользователь взаимодействует только с моим графическим интерфейсом, прежде чем он видит что-либо еще.
В соответствии с требованиями моего проекта, мы должны позволить системным администраторам видеть, что конечный пользователь делает на машинах Debian, в любое время, поэтому он должен иметь возможность видеть их экраны в любое время. Он будет использовать Windows-машину для этого. Поэтому мне интересно, можно ли поделиться экраном Debian с сервером Windows, и что будет с этим связано.
Нужна ли настройка VNC-сервера на компьютерах Debian для этого? Есть ли другой способ?
источник
x11vnc
. Однако, если вы не используете X и вместо этого запускаете Qt, встроенный непосредственно в кадровый буфер Linux,x11vnc
это вам не поможет. Я не думаю, что существуют какие-либо инструменты, которые будут совместно использовать кадровый буфер Linux через VNC. Qt может быть скомпилирован с поддержкой VNC-сервера, но, насколько я понимаю, это заменит ваш существующий дисплей кадрового буфера, вместо того, чтобы работать одновременно.Ответы:
В случае, если вы используете терминал только на стороне клиента (вы сказали, что на клиентских хостах не запущен сервер xserver), у меня есть предложение, как этого добиться. На самом деле это минимальный, но легко расширяемый пример, который показывает, как вы можете отслеживать сеанс терминала на удаленном хосте. Я не знаю какого-либо специального программного обеспечения для этого, и, вероятно, есть несколько способов сделать это более элегантным, поэтому, пожалуйста, не ожидайте многого.
Мой первый совет - установить
rootsh
на стороне клиента.К сожалению, ваш репозиторий Debian не упакован, поэтому вы должны сделать свои собственные двоичные файлы. Этого легко достичь, так как у rooth нет необычных зависимостей. Более того, вам нужен
socat
инструмент для двунаправленной передачи данных.Если вы вызываете
rootsh
какновая оболочка входа в систему запускает все, что отражается на терминале из этой оболочки, или любой дочерний процесс записывается
logfile
(также специальные символы, изначально предназначенные для tty).Теперь вы можете создать TCP-сокет на клиенте с
с которого вы можете читать с хоста админа. Например, с
или с
netcat
т. е.telnet
(доступны двоичные файлы Windows для socat).В случае, если вы хотите иметь более безопасный поток данных между узлами, вы также
socat
можете указать его шифрованиеOPENSSL
. Вы можете найти отличное объяснение этому в статье « Защита трафика между двумя экземплярами Socat с использованием SSL» .Я признаю, что у моего подхода есть несколько недостатков, но этого достаточно, чтобы проиллюстрировать, что возможно без каких-либо специальных инструментов.
источник