Use o SSH para enviar o tcpdump para o wireshark com o “comando” em authorized_keys

0

queremos ativar o rastreamento de rede em tempo real para o teste de aplicativos.

Queremos conceder permissões / direitos mínimos no host remoto que executará o tcpdump.

Então eu tentei configurar uma chave autorizada que é usada para login.

command="sudo tcpdump -n -i eth0 -s 65535 -w -" ssh-rsa AAAAB3NzaC....

Quando conecto da máquina cliente e uso

ssh -i private.key [email protected] | wireshark -S -k -i -

Wireshark reclama e diz "formato pcap não reconhecido"

Quando, em vez disso, executamos

 ssh -i private.key [email protected] "tcpdump -i eth0 -w -" | wireshark -S -k -i -

e remova o comando="..." das chaves autorizadas que funcionam!

Qual é a diferença dessas duas variantes? se eu remover o "| wireshark ..." em ambos os casos eu vejo dados binários vindo para mim no terminal ...

Caso haja uma diferença que torne isso impossível em qualquer caso, vocês sabem uma maneira em que o comando pode de alguma forma ser pré-definido no lado do servidor?

Como tentei explicar no começo, as máquinas clientes que executam o wireshark devem ser o mais restritas possível.

Obrigado pela sua ajuda!

    
por aslmx 10.09.2015 / 14:52

1 resposta

0

No primeiro caso, é normal a sessão ssh com o pseudo-terminal.

Se você quiser apenas os dados (sem caracteres de controle de terminal e coisas do tipo), você deve tentar ssh com -T switch.

A outra solução para obter o mesmo comportamento é colocar no-pty ao lado do comando em authorized_keys file (obrigado @mykel):

command="sudo tcpdump -n -i eth0 -s 65535 -w -",no-pty ssh-rsa AAAAB3NzaC....
    
por 10.09.2015 / 16:27