.bashrc
ログインするたびにアクティブなSSH接続を表示できるようにいくつかのコマンドを追加しました。ただし、同様のポート番号には「223346」などの「22」が含まれているため、SSH接続のみが表示されない場合があります。
実行するコマンドは次のとおりです。
netstat -tan | grep ":22\|ssh" | grep -v "LISTEN" | awk '{print " "$4" -> "$5" "$6}'
時には次のように出力されます。
192.168.1.75:52623 -> 213.174.2.30:22650 SYN_SENT
192.168.1.75:22 -> 192.168.1.109:60561 ESTABLISHED
grepを使用してSSH接続のみを表示する方法はありますか?ありがとうございます!
答え1
Linuxの場合、マニュアルページにss
正確な例を示します。
ss -o state established '( dport = :ssh or sport = :ssh )'
また、見ることができます
lsof -i tcp:22
または:
lsof -i :53
(tcpまたは他の転送プロトコル)
ただし、lsof
スーパーユーザーでない場合は、所有していないプロセスに関する情報は表示されません。
答え2
私はこのテストを通してアクセスします:
- 確立された接続と
- のいずれかを含む着信(フィールド3のポートは22です。)国を離れる
:
(フィールド4のポートは22です。)接続 - フィールドの終わりと間に固定されます$
。
含めるようにロジックを調整できます。誰でも入ったり出たりすること、それがあなたが追求するものならば。
netstatのフラグを使用している場合は、-n
「ssh」を検索する必要はありません。 IPを確認しようとしたときにポートだけを数字で指定するように要求し、netstatフラグ--numeric-ports
も削除しました。-a
「LISTEN」行をフィルタリングします(他のエンドポイントに接続されていないため)。設定された接続のみを印刷するので、出力からフィールド6(「ESTABLISHED」)も削除しました。これは静的でも動的でも簡単に再追加できます。
netstat -n | awk '$6 == "ESTABLISHED" && ($3 ~ /:22$/ || $4 ~ /:22$/) { print $4 " -> " $5}'
または
netstat --numeric-ports | awk '$6 == "ESTABLISHED" && ($3 ~ /:22$/ || $4 ~ /:22$/) { print $4 " -> " $5}'