Intereting Posts
Перенос с одного Linux на другой: как сохранить второй диск? Могу ли я использовать iptables для пересылки между интерфейсами без установки / proc / sys / net / ipv4 / ip_forward? Действительно ли ddrescue здесь что-то делает? Как передать параметры RPM через YUM CLI? Каков альтернативный модуль openldap pwdChecker? Шифровать существующий диск с помощью LUKS? Хранение паролей приложений в центре Как сохранить «экран» с emacs? Если я убью буфер с emacs, я могу убить процесс? Как установить информацию об отладке dhclient? Очистить каталог $ HOME Получение информации из журналов с использованием grep, sed, awk и cut Установленные папки с привязкой занимают место на корневом диске Увеличьте ценность для многих процессов «Нет такого файла или каталога» при выполнении кросс-скомпилированной программы на малиновой пи popd pushd, dirstack хранит доступные каталоги в виде текстового списка где-нибудь?

Трафик tcpdump трафика через SSH – но нет доступа root ssh

Ситуация

Я хотел бы использовать Wireshark для анализа трафика на одном из наших серверов, но я не хочу устанавливать Wireshark на самом сервере. Я понимаю, что я могу передать трафик tcpdump через SSH на мою локальную машину (Ubuntu), на которой установлен Wireshark.

Проблема

Я не могу войти на сервер с учетной записью root, потому что это отключено. У меня есть права sudo, но при входе на сервер команда sudo tcpdump не работает. Команда ниже (с или без sudo) не будет работать:

 $ ssh john@server-abc.com "sudo tcpdump -s 0 -U -n -w - -i eth0 not port 22" > /tmp/remote 

Вопрос

Есть ли способ заставить это работать? Если так – как?

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

 sudo tcpdump -i eth0 -s 65535 -w /tmp/wireshark 

Без sudo команда не имеет привилегий для захвата устройства:

tcpdump: eth0: у вас нет разрешения на захват на этом устройстве

Но с sudo это было бы, но после запуска ssh он никогда не вводит пароль для sudo на удаленном сервере, поэтому в решении используется -S ( man sudo ) и пароль для паролей для sudo следующим образом:

 ssh john@server-abc.com "echo sudo_password | sudo -S tcpdump -s 0 -U -n -w - -i eth0 not port 22" > /tmp/remote" 

С одной стороны, это хорошо для автоматизации, не получив пароль sudo password promts и, чтобы полностью автоматизировать код / ​​скрипт, вы должны добавить sshpass -p password ssh...

Однако на сервере, где другие могут легко прочитать ваш пароль sudo, предоставленный в качестве открытого текста во время сеанса ssh который не рекомендуется с точки зрения безопасности. Итак, чтобы получить sudo с ssh и быть безопасным использованием ssh -t

С -t невозможно передать ssh "sudo command"| command например, ssh -t server "cd path/to/directory && sudo"|grep "text" но это возможно с использованием файла -S и эхо-пароля, например ssh server 'echo password | sudo -S ls -l'| grep 'a' ssh server 'echo password | sudo -S ls -l'| grep 'a'