因為需要抓取遠程服務器上的數據包,又不想使用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 -