浦安市在住+デジカメ
浦安市在住のプログラマーが、デジカメを片手に日々を語ったり語らなかったり愚痴ったり・・・
-
ssh先でパケットキャプチャしたい(主にmac向け)
Posted on 2月 6th, 2018 はおりん No commentsssh先でパケットキャプチャしたい。ssh接続が公開鍵認証で、秘密鍵が手元にあって、tcpdumpするのにsudoが必要ないならば、以下のコマンドでいけます。wireshark -k -i <(ssh user@example tcpdump -U -n -w -)ところが、ssh接続にパスワードが必要だったり、tcpdumpするのにsudoが必要だったりすると、sshのパスワードが入力できなかったり、sudoのパスワードプロンプトをwiresharkに奪われてって言われたりします。そこで、先にリモートサーバでtcpdumpを実行しておき、その出力をWireshark(とssh)で拾いに行きます。そこで活躍するのが、名前付きパイプです。まず、名前付きパイプを作ります。自分が読み書きできるディレクトリなら、どこでもいいです。名前もなんでもいいです。mkfifo mytcpdumpこれで名前付きパイプが出来ました。lsするとちょっと特殊な感じです。$ ls -l合計 0prw-rw-r– 1 haoling haoling 0 2月 6 15:53 mytcpdump先頭が「p」になってます。名前付きパイプの意味でしょうかね。名前付きパイプが出来たので、ここに向かってtcpdumpを出力します。sudo tcpdump -U -n -s 0 -w mytcpdump "not port 22"「not port 22」ってしておかないと、wiresharkのssh接続が延々とパイプに出力されるので、えらいことになります。tcpdumpの各オプションの意味はbearmini’s blog様を参考にすると良いでしょう。これで、名前付きパイプに向かってtcpdumpの出力が送られ続けますが、名前付きパイプはプロセス間通信用の特殊なファイルなので、ディスク容量を消費したりはしません。これを、ssh経由でWiresharkに読ませます。ssh username@example cat mytcpdump | wireshark -k -i –tcpdumpを実行してからwiresharkを実行するまでの間に時間が開いても大丈夫です。名前付きパイプはリアルタイムにデータが送られてくるので、遅延はありません。データを溜め込むこともありません。Wiresharkを終了するとリモート側のtcpdumpも落ちたりするので、毎回起動する必要はあるかもしれません。
未分類 Linuxコメントを書く