Используйте SSH для передачи tcpdump в wireshark с помощью «команды» в authorized_keys

893
aslmx

мы хотим включить трассировку сети в режиме реального времени для тестирования приложений.

Мы хотим предоставить как можно меньше разрешений / прав на удаленный хост, на котором будет запускаться tcpdump.

Поэтому я попытался настроить авторизованный ключ, который используется для входа в систему.

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

Когда я подключаюсь с клиентского компьютера и использую

ssh -i private.key user@10.10.254.200 | wireshark -S -k -i - 

Wireshark жалуется и говорит: «Неопознанный формат pcap»

Когда мы вместо этого бежим

 ssh -i private.key user@10.10.254.200 "tcpdump -i eth0 -w -" | wireshark -S -k -i - 

и удалите команду = "..." из авторизованных ключей, это работает!

В чем разница между этими двумя вариантами? если я удаляю «| wireshark ...» в обоих случаях, я вижу двоичные данные, поступающие ко мне в терминале ...

В случае, если есть разница, которая сделает это невозможным в любом случае, вы, ребята, знаете способ, которым команда может быть каким-то образом предопределена на стороне сервера?

Как я пытался объяснить в начале, клиентские машины, на которых работает wireshark, должны быть максимально ограничены.

Спасибо за вашу помощь!

0

1 ответ на вопрос

0
Jakuje

In the first case it is normal ssh session with pseudo-terminal.

If you want just the data (without terminal control characters and stuff like that), you should try ssh with -T switch.

The other solution how to achieve the same behaviour is to put no-pty next to the command in authorized_keys file (thanks @mykel):

command="sudo tcpdump -n -i eth0 -s 65535 -w -",no-pty ssh-rsa AAAAB3NzaC.... 
@aslmx, пожалуйста. Помечать как ответ поможет Jakuje 8 лет назад 0
Этого также можно достичь, добавив опцию `no-pty` в файл` authorized_keys`. mykel 8 лет назад 1

Похожие вопросы