Используйте SSH для передачи tcpdump в wireshark с помощью "команды" в authorized_keys
Мы хотим включить трассировку сети в режиме реального времени для тестирования приложений.
Мы хотим предоставить как можно меньше разрешений / прав на удаленный хост, на котором будет запускаться 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, должны быть максимально ограничены.
Спасибо за вашу помощь!
1 ответ
В первом случае это обычный ssh-сеанс с псевдотерминалом.
Если вам нужны только данные (без управляющих символов терминала и тому подобного), попробуйте ssh
с -T
переключатель.
Другое решение, как добиться того же поведения, это поставить no-pty
рядом с командой в authorized_keys
файл (спасибо @mykel):
command="sudo tcpdump -n -i eth0 -s 65535 -w -",no-pty ssh-rsa AAAAB3NzaC....