用wireshark+tcpdump+ssh远程抓包并实时显示

我们平时用的抓包工具一般就是wireshark或tcpdump,前者有图形界面,当我们要远程登录到Linux主机抓包时,一般就只能选择tcpdump,并保存为文件,再拉到本地用wireshark打开。

很多时候这样就够了,但是如果希望实时显示远程主机上抓到的包,用tcpdump -X看起来会很痛苦,而想在远程主机上用X跑wireshark的图形界面是件让人抓狂的事情。

有没办法让tcpdump远程抓包,再将数据实时传送到本地,再用wireshark图形化界面实时打开?

有办法!用ssh当通道来干这事儿。

准备工作

  • 本地PC机上得有命令行版的ssh,图形化的SecureCRT应该不行
  • 本地PC机上有wireshark
  • 远程主机上有tcpdump
  • 你有远程主机的root权限(否则你也抓不了包啊)
  • 找到本地PC机上ssh和wireshark的路径(或者加入PATH,用于执行命令)

工作思路

基本的想法就是用ssh登录到远程主机上,发起tcpdump抓包,并将tcpdump抓到的结果输出到stdout,再传回本地PC机,而本地PC机上的wireshark以stdin为输入,两者以管道连接传输。

命令示例

ssh root@some.host 'tcpdump -i eth0 port 80 -s 0 -l -w -' | wireshark -k -i -

命令执行后会弹出wireshark界面,这时需要切回刚刚的命令行,因为需要输入密码以登录远程主机(已经配置免密另说),连接成功后即开始抓包,并在本地PC的wireshark上实时显示抓包结果。

参数解释

tcpdump中 ‘-l ’ (这里是小写的字母L)是指line-buffer,即不使用缓存,直接输出,否则就会一段段的输出。’-w -'是指写文件,目标文件为标准输出。至于tcpdump另外的参数,想抓什么端口,这个请搜下度娘,一搜一大把。

wireshark中 ‘-k’ 是指马上开始捕获数据,’-i -’ 是指从指定接口获取,源为标准输入。

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐