使用wireshark+ssh+tcpdump远程抓包

因为需要抓取远程服务器上的数据包,又不想使用tcpdump这种命令行工具进行(用了wireshark后谁还愿意去看密密麻麻的命令行呢),所以在网上查找了一下使用wireshark远程抓包的方法,在这里记录一下。

原生支持

wireshark本身是支持远程抓包的,不过可能是因为我是Ubuntu下的wireshark的缘故,所以没有远程连接的选项。我刚开始怀疑是我的版本过低,卸载后重新安装,现在的版本是

Wireshark 3.4.8 (Git v3.4.8 packaged as 3.4.8-1~ubuntu20.04.0+wiresharkdevstable1)

仍旧不行,不过还是找到一篇非常棒的博客,如果可以的同志可以借鉴一下:
使用Wireshark远程抓包服务器

使用ssh和tcpdump重定向

因为上面的方法行不通,只能通过这种重定向的方式进行抓包,找到一篇不错的博客:
wireshark使用SSH和tcpdump实现远程抓包
但是如果远程服务器没有root账户会遇到问题:登录账户没有抓包权限。为了能够让我们的账户有这个权限,我们需要登录服务器赋予权限。
主要参考了知乎上的一篇文章:linux下为普通用户添加抓包权限
如果看不懂这篇文章可以再看一下这一篇参照理解一下,不过步骤还是上面那篇文章:以非 root 用户身份使用 Wireshark 抓包(Sniffing with Wireshark as a Non-Root User)

具体的抓包命令如下:

sudo ssh username@host -p 22 'tcpdump -i eth0 -s 0 -l -w -' | wireshark -k -i -

你可能感兴趣的:(工具,wireshark)