No caso de você ter apenas o uso do terminal no lado do cliente (você disse que não tem nenhum tipo de xserver em execução nos hosts do cliente), tenho uma sugestão de como você pode conseguir isso. Na verdade, é um exemplo mínimo, mas facilmente expansível, que mostra como você pode monitorar uma sessão de terminal em um host remoto. Eu não conheço nenhum software especial para isso e, provavelmente, existem várias maneiras de conseguir isso mais elegante, então, por favor, não espere muito.
Meu primeiro conselho é instalar rootsh
no lado do cliente.
It's a wrapper for shells which logs all echoed keystrokes and terminal output to a file and/or to syslog [rootsh website]
Infelizmente, o seu repositório Debian não está cheio dele, então você tem que fazer seus próprios binários. O que é fácil de conseguir, já que o rootsh não possui dependências sofisticadas. Ainda mais, você precisa de socat
, uma ferramenta para transferência de dados bidirecional.
Se você invocar rootsh
like
./rootsh -i -f logfile
um novo shell de login inicia um eco de tudo no terminal deste shell ou qualquer processo filho é gravado em logfile
(também caracteres especiais originalmente destinados ao tty).
Agora você pode criar um soquete TCP no cliente com
socat OPEN:logfile,ioreeof TCP-LISTEN:22222,fork
a partir do qual você pode ler a partir do host do administrador. Por exemplo com
socat TCP:clientdomain:22222 STDOUT
ou com netcat
, ou seja, telnet
(os binários do Windows para socat estão disponíveis).
Caso você deseje ter um fluxo de dados mais seguro entre os nós, também é possível instruir socat
para criptografá-lo via OPENSSL
. Você pode encontrar uma ótima explicação sobre isso no artigo Protegendo o tráfego entre duas instâncias do Socat usando SSL .
Admito que minha abordagem tem várias falhas, mas é suficiente para ilustrar o que é possível sem ferramentas especiais.