Використовуйте SSH для передачі tcpdump у провідну команду з "командою" в санкціонованих_ ключах


0

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

Ми хочемо надати якомога менше дозволів / прав на віддалений хост, який запустить 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 ...", в обох випадках я бачу бінарні дані, що надходять до мене в терміналі ...

Якщо є різниця, яка зробить це неможливим у будь-якому випадку, ви, хлопці, знаєте спосіб, коли команду можна якось заздалегідь визначити на стороні сервера?

Як я намагався пояснити на початку, клієнтські машини, які працюють на проводках, повинні бути максимально обмеженими.

Спасибі за вашу допомогу!

Відповіді:


0

У першому випадку це звичайний ssh ​​сеанс з псевдотерміналом.

Якщо ви хочете тільки дані (без символів терміналу управління і тому подібних), ви повинні спробувати sshз -Tперемикачем.

Іншим рішенням, як досягти такої ж поведінки, є розміщення no-ptyпоруч із командою у authorized_keysфайлі (спасибі @mykel):

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

@aslmx ласкаво просимо. Позначення як відповідь допоможе
Jakuje

1
Ви також можете досягти цього, додавши no-ptyопцію у authorized_keysфайл.
mykel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.