状態
Wiresharkを使用してサーバーの1つのトラフィックを分析したいのですが、サーバー自体にWiresharkをインストールしたくありません。理解できます。パイプ tcpdump トラフィックWiresharkがインストールされているローカルコンピュータ(Ubuntu)にSSH経由で接続します。
質問
ルートアカウントが無効になっているため、サーバーにログインできません。 sudo権限があり、sudo tcpdump
サーバーにログインした後、コマンドは機能しません。次のコマンド(sudoを含むまたは除く)は機能しません。
$ ssh [email protected] "sudo tcpdump -s 0 -U -n -w - -i eth0 not port 22" > /tmp/remote
質問
動作させる方法はありますか?それでは、どうすればいいですか?
答え1
このコマンドがないと、sudo
デバイスをキャプチャする権限がありません。
tcpdump: eth0: このデバイスでキャプチャする権限がありません。
ただし、sudo
これを使用して後で実行すると、リモートサーバーからパスワード入力を取得できないため、解決ssh
策は()を使用して次のようにパスワードをパイプすることです。sudo
-S
man sudo
sudo
ssh [email protected] "echo sudo_password | sudo -S tcpdump -s 0 -U -n -w - -i eth0 not port 22" > /tmp/remote"
一方、これは自動化に適しており、sudo
パスワードプロンプトを受け取る必要はなく、完全に自動化されたコード/スクリプトを追加できますsshpass -p password ssh...
。
ただし、サーバーでは、ssh
セッション中に公開テキストとして提供されるsudoパスワードを他の人が簡単に読み取ることができるため、セキュリティの面ではお勧めできません。それでは、必ず持ってsudo
安全にssh
使用してくださいssh -t
たとえば、-t
パイピングはできませんが、-Sを使用してパスワードをエコーすることは可能です。ssh "sudo command"| command
ssh -t server "cd path/to/directory && sudo"|grep "text"
ssh server 'echo password | sudo -S ls -l'| grep 'a'
答え2
サーバーでsudoを介してこのコマンドを実行して、最初にデータをキャプチャしてから、結果ファイルをワークステーションに戻してデータを表示できます。
sudo tcpdump -i eth0 -s 65535 -w /tmp/wireshark