I‘m using tcpdump to dump, debug and monitor traffic on a network. However, there is lots of noise and I would like to exclude ssh from my dumps. How do I monitor all traffic except my ssh session?
The tcpdump command displays out the headers of packets on a network interface that match the boolean expression. In other words you can use boolean expression to drop ssh traffic from dumping and monitoring operation using the following syntax:
tcpdump -i eth1 -s 1500 port not 22 |
You can skip additional ports too:
tcpdump -i eth1 -s 1500 port not 22 and port not 53 |
You can also use ip or hostname:
tcpdump -i eth1 port not 22 and host 1.2.3.4 |
See also:
man tcpdump



7 comment
There are unmatched ‘pre’ tags in the first example.
And btw, please switch sides of text and banners if possible. :\
Thanks for the heads up and sorry for the mixup. I’ve fixed css issue :)
It’s also possible to use the service names in /etc/services, like
# tcpdump -i eth0 “port not ssh”
a little more automatic… =)
tcpdump -i eth0 port not 22 and host not `echo $SSH_CLIENT | awk ‘{print $1}’`
pretty darn useful stuff. kiu.
tcpdump -i eth0 port 80 and 443 and host not `echo $SSH_CLIENT | awk '{print $1}'` and not host 'tor.sabotage.org' and not host 'sh02.packetderm.com' and not host 'anemone.mooo.com' and not host 'snorky.mixmin.net' >> temp-tcpdump.txt“>>” will create a flat file. Why not use “-w” to right a pcap file?
tcpdump -i enp1s10 not port ssh and not host `hostname -I` -w my_cap.pcap