SSHが終了すると、SSHによって生成されたtcpdumpプロセスが終了します。

SSHが終了すると、SSHによって生成されたtcpdumpプロセスが終了します。

私たちはunixでリモートキャプチャを実行しており、tcpdumpsshが終了するたびに(すべての中断、つまりctrl cまたは他の中断)、もうtcpdump一方の端でsshを停止/終了する必要があります。

SSHが終了したときにSSHによって生成されたプロセスを終了するためにリストされているほとんどのオプションを試しました。 tcpdump ssh の場合、-t は予期しないプレフィックス行を最初に追加するため不可能です。

したがって、すでにこの種の問題を解決した人がいる場合は、これを達成するためのいくつかの良い解決策を知りたいです。

次のようにrootとしてリモートで実行しましたtcpdump

ssh {remotehost} "tcpdump -i eth0 -s 0 -w - " > /tmp/local_file

ありがとうございます。

ベストアンサー1

リモートで実行してsshプロセスを終了すると、もう一方の端も終了します。何らかの理由でこの結末を保留しない限り。この場合、大きなスクリプトの一部としてバックグラウンドで実行できます。

また、rootをリモートで使用してはいけません。sshにrootは必要ありません。可能であれば、root で作業しないでください。有能なリモートユーザーを使用してくださいsudo

tcpdumpデフォルトでは、標準出力に書き込むため、「w -」も必要ありません。

tcpdumpセッションをより効果的に制御するためにキャプチャされたパケット数を制限することもできます。システムからポート22を除外する必要があります。そうでなければ、sshリモートシステムは自己フィードバック方式で現在のセッションをキャプチャします。

したがって、1000 個のパケットをキャプチャするには、次の手順を実行します。

$ssh [email protected] "sudo tcpdump -i eth0 -s0 -c 1000 not port 22" > /tmp/local_file

あまりきれいではないもう1つの選択肢は、pkillの後に実行することです。

$ssh ..."sudo tcpdump"
$ssh ..."pkill tcpdump"

最後の警告として、/tmpそのディレクトリが存在するルートディレクトリは通常、制限されたファイルシステムまたはRAMに常駐します。 / tmpディレクトリに予測可能な名前を作成すると、特に権限を持つユーザーにセキュリティリスクが発生します。キャプチャファイルを保存するために別の場所を使用することもできます。

システム管理者として、ansibleより洗練されたツールを使用した自動化またはリモート管理に投資することもできます。PowerShellの「一対多」リモート機能に対応するLinux

おすすめ記事