Мы выполняем удаленный захват tcpdump
в Unix. Всякий раз, когда ssh завершается (любое прерывание, например, ctrl c или любое другое), нам нужно, tcpdump
чтобы на другом конце был остановлен/завершен.
Мы перепробовали большинство из перечисленных вариантов для завершения процесса, порожденного SSH, когда ssh завершается. Для tcpdump ssh с -t нецелесообразно, так как он добавляет строку в начало, что не ожидается.
Поэтому, если кто-то уже работал над решением подобных проблем, мы хотели бы узнать о хорошем решении для достижения этой цели.
Я запускаю tcpdump
удаленно как root следующим образом:
ssh {remotehost} "tcpdump -i eth0 -s 0 -w - " > /tmp/local_file
Спасибо.
решение1
Запустив его удаленно, если вы убьете ssh
процесс, другой конец должен умереть. Если только вы не позволяете этому концу приостановиться по какой-то причине. Если это так, вы можете запустить его как часть более крупного сценария в фоновом режиме.
Вам также не следует использовать root удаленно, и вам определенно не нужен root на стороне, выполняющей ssh. Избегайте работы как root, насколько это возможно. Используйте удаленного пользователя с sudo
полномочиями.
Вероятно, вам также не понадобится «w -», так как tcpdump
по умолчанию запись выполняется в stdout.
Вы также можете ограничить tcpdump
количество захваченных пакетов, чтобы лучше контролировать сеанс. Обратите внимание, что вам нужно исключить порт 22 из системы, ssh
иначе удаленная система захватит текущий сеанс своего рода самоподпитывающимся рекурсивным способом.
Итак, чтобы перехватить 1000 пакетов, вы можете сделать:
$ssh [email protected] "sudo tcpdump -i eth0 -s0 -c 1000 not port 22" > /tmp/local_file
Другая, менее понятная альтернатива — запуск после pkill:
$ssh ..."sudo tcpdump"
$ssh ..."pkill tcpdump"
В качестве последнего предупреждения, /tmp
или корень, где он находится, часто находится в ограниченных файловых системах или в оперативной памяти; также риском безопасности является создание предсказуемых имен в каталоге /tmp, особенно в качестве привилегированного пользователя. Вы можете захотеть использовать другое местоположение для файла захвата.
Вы также можете получить лучшие результаты как системный администратор, инвестируя в такой инструмент, как ansible
. Для автоматизации или использования более сложных инструментов для удаленного администрирования см.Linux-эквивалент удаленного взаимодействия PowerShell «один ко многим»