tcpdump: Monitor ALL eth1 Traffic Except My Own SSH Session

by on April 14, 2010 · 5 comments· LAST UPDATED April 14, 2010


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

See also:

man tcpdump

Tweet itFacebook itG+ itDownload PDF versionFound an error/typo on this page?

{ 5 comments… read them below or add one }

1 Zdenek Styblik April 14, 2010 at 10:27 am

There are unmatched ‘pre’ tags in the first example.
And btw, please switch sides of text and banners if possible. :\


2 nixCraft April 14, 2010 at 11:10 am

Thanks for the heads up and sorry for the mixup. I’ve fixed css issue :)


3 rik April 14, 2010 at 11:56 am

It’s also possible to use the service names in /etc/services, like
# tcpdump -i eth0 “port not ssh”


4 Ran April 15, 2010 at 8:07 am

a little more automatic… =)
tcpdump -i eth0 port not 22 and host not `echo $SSH_CLIENT | awk ‘{print $1}’`


5 dapxin April 18, 2010 at 11:00 pm

pretty darn useful stuff. kiu.


Leave a Comment

Tagged as: , , , , , , , ,

Previous Faq:

Next Faq: