Запуск tcpdump на удаленной машине без tty с использованием ssh

0

Я пытаюсь запустить tcpdump на нескольких удаленных компьютерах для выполнения сетевого анализа с помощью сценария, но мне не удается его правильно запустить. Команда, которую я хотел бы использовать:

ssh user @ host "nohup sudo / usr / sbin / tcpdump udp -l -s 68 -n -v -i eth0 1> tcpdump.txt 2> tcpdump.err &"

Чтобы запустить tcpdump удаленно, передайте результаты в файл и немедленно верните их. Не имея клавиатуры, установленной на удаленной машине, все, что я получаю, это

sudo: tty отсутствует и не задана программа askpass

написанный в tcpdump.err. Я также попробовал:

  • написание команды в скрипте bash и удаленный запуск скрипта
  • включение части sudo в команду 'script' (script -c 'nohup sudo ...')

но безуспешно Есть ли другие альтернативы, которые я могу попробовать?

Satto
источник
Вы пробовали ssh -t для принудительного выделения псевдо-tty?
parkydr
Извините, я забыл упомянуть об этой альтернативе: я уже пытался использовать опцию -t, один и два раза ("ssh -t -t ...")
Satto

Ответы:

0

Вы используете sudo в своей команде, которая требует аутентификации, если на удаленном хосте не настроено иначе. Вам придется ввести пароль для аутентификации, если вы не попробуете что-то вроде

user NOPASSWD: /usr/sbin/tcpdump

в файле sudoers на удаленном хосте.

Это может иметь серьезные последствия для безопасности; если кто-то взломает систему как этот пользователь (или просто сядет за одну из своих авторизованных консолей), он может tcpdump весь трафик на / с этого хоста без аутентификации как root или этого пользователя.

Посетите раздел tag_spec справочной страницы sudoers для более подробной информации.

overprescribed
источник