SSH가 종료되면 SSH에서 생성된 tcpdump 프로세스를 종료합니다.

SSH가 종료되면 SSH에서 생성된 tcpdump 프로세스를 종료합니다.

우리는 unix에서 원격 캡처를 수행하고 있으며 tcpdumpssh가 종료될 때마다(모든 중단, 즉 ctrl c 또는 기타 중단) tcpdump다른 쪽 끝에서 ssh를 중지/종료 해야 합니다.

SSH가 종료될 때 SSH에 의해 생성된 프로세스를 종료하기 위해 나열된 대부분의 옵션을 시도했습니다. tcpdump ssh의 경우 -t는 예상하지 못한 접두사 줄을 처음에 추가하기 때문에 불가능합니다.

따라서 이미 이런 종류의 문제를 해결한 사람이 있다면 이를 달성하기 위한 몇 가지 좋은 솔루션을 알고 싶습니다.

다음과 같이 루트로 원격으로 실행했습니다 tcpdump.

ssh {remotehost} "tcpdump -i eth0 -s 0 -w - " > /tmp/local_file

감사해요.

답변1

원격으로 실행하고 ssh프로세스를 종료하면 다른 쪽 끝도 종료됩니다. 어떤 이유로든 이 결말을 보류하지 않는 한. 이 경우 더 큰 스크립트의 일부로 백그라운드에서 실행할 수 있습니다.

또한 루트를 원격으로 사용해서는 안 되며, ssh에 루트가 필요하지도 않습니다. 가능하면 루트로 작업하지 마십시오. 유능한 원격 사용자를 사용하십시오 sudo.

tcpdump기본적으로 표준 출력에 쓰기 때문에 "w -"도 필요하지 않을 것입니다 .

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해당 디렉토리가 상주하는 루트 디렉토리는 일반적으로 제한된 파일 시스템이나 RAM에 상주합니다. /tmp 디렉토리에 예측 가능한 이름을 생성하면 특히 권한이 있는 사용자에게 보안 위험이 발생합니다. 캡처 파일을 저장하기 위해 다른 위치를 사용할 수도 있습니다.

시스템 관리자로서 ansible보다 정교한 도구를 사용한 자동화 또는 원격 관리에 투자할 수도 있습니다.PowerShell의 "일대다" 원격 기능에 해당하는 Linux

관련 정보