상태
Wireshark를 사용하여 서버 중 하나의 트래픽을 분석하고 싶지만 서버 자체에 Wireshark를 설치하고 싶지 않습니다. 이해해요 할 수 있어요파이프 tcpdump 트래픽Wireshark가 설치된 로컬 컴퓨터(Ubuntu)에 SSH를 통해 연결합니다.
질문
루트 계정이 비활성화되어 있어서 서버에 로그인할 수 없습니다. sudo 권한이 있는데 sudo tcpdump
서버에 로그인한 후 명령이 작동하지 않습니다. 다음 명령(sudo 포함 또는 제외)은 작동하지 않습니다.
$ ssh [email protected] "sudo tcpdump -s 0 -U -n -w - -i eth0 not port 22" > /tmp/remote
질문
작동하게 하는 방법이 있나요? 그렇다면 어떻게 해야 할까요?
답변1
이 명령이 없으면 sudo
장치를 캡처할 수 있는 권한이 없습니다.
tcpdump: eth0: 이 장치에서 캡처할 수 있는 권한이 없습니다.
그러나 sudo
이를 사용하고 나중에 실행하면 원격 서버에서 비밀번호 입력을 얻지 못하므로 ssh
해결책은 ()를 사용하고 다음과 같이 비밀번호를 파이프하는 것입니다.sudo
-S
man sudo
sudo
ssh [email protected] "echo sudo_password | sudo -S tcpdump -s 0 -U -n -w - -i eth0 not port 22" > /tmp/remote"
한편으로 이것은 자동화에 좋으며, sudo
비밀번호 프롬프트를 받을 필요가 없으며, 완전히 자동화된 코드/스크립트를 추가할 수 있습니다 sshpass -p password ssh...
.
그러나 서버에서는 ssh
세션 중에 공개 텍스트로 제공되는 sudo 비밀번호를 다른 사람이 쉽게 읽을 수 있으므로 보안 측면에서 권장되지 않습니다. 그럼 꼭 갖고 sudo
안전하게 ssh
사용하세요ssh -t
예를 들어, -t
파이핑은 불가능하지만 -S를 사용하고 비밀번호를 에코하는 것은 가능합니다.ssh "sudo command"| command
ssh -t server "cd path/to/directory && sudo"|grep "text"
ssh server 'echo password | sudo -S ls -l'| grep 'a'
답변2
서버에서 sudo를 통해 이 명령을 실행하여 먼저 데이터를 캡처한 다음 결과 파일을 워크스테이션으로 다시 보내 데이터를 볼 수 있습니다.
sudo tcpdump -i eth0 -s 65535 -w /tmp/wireshark