web-dev-qa-db-ja.com

コマンドラインでwireshark / tsharkを使用してssh接続を無視する

パケットを調べて一部をデバッグしようとしていますが、サーバーへのすべてのSSHトラフィックを取得しないようにしたいと思います。無視する方法はありますか?

tshark -f "port !22"のようなことを試みましたが、コマンドの後でリッスンしなくなりました。

[root@vpn ~]# tshark -f "port !22"
tshark -f "port ls"
Running as user "root" and group "root". This could be dangerous.
Capturing on venet0
tshark: arptype 65535 not supported by libpcap - falling back to cooked socket.

tshark: Invalid capture filter: "port ls"!

That string isn't a valid capture filter (unknown port 'ls').
See the User's Guide for a description of the capture filter syntax.
0 packets captured
[root@vpn ~]#
4
Tiffany Walker

Tsharkとtcpdumpはどちらもpcapライブラリを使用するため、キャプチャフィルターは pcap-filter syntax を使用します。 @tristanが言うように、必要なフィルターは"not port 22"です。これは、-fオプションの引用符付き文字列引数として、またはコマンドの引用符なし引数として入力できます。次のコマンドは同等です。

# tshark -f "not port 22"
# tshark -- not port 22

上記のコマンドについてtsharkが不平を言った理由は、シェル(おそらくBash)がコマンド履歴のコマンド番号22(この場合はls)に「!22」を展開したためです。 Bashのドキュメント には、履歴の拡張に関する詳細情報があります。

5
bonsaiviking

現在、tsharkインストールにアクセスできませんが、tcpdumpと同じであると想定しています。

Sudo tcpdump not port 22

そう、潜在的に:

tshark not port 22