web-dev-qa-db-ja.com

SSH経由のtcpdumpトラフィックのパイピング-ただし、ルートsshアクセスはありません

状況

Wiresharkを使用してサーバーの1つでトラフィックを分析したいのですが、サーバー自体にWiresharkをインストールしたくありません。 Wiresharkがインストールされているローカルマシン(Ubuntu)にSSHで pipe tcpdump traffic できることを理解しています。

問題

Rootアカウントが無効になっているため、サーバーにログインできません。私はSudo権限を持っていますが、サーバーにログインすると、コマンドSudo tcpdump 動作しません。以下のコマンド(Sudoの有無にかかわらず)は機能しません。

$ ssh [email protected] "Sudo tcpdump -s 0 -U -n -w - -i eth0 not port 22" > /tmp/remote

質問

これを機能させる方法はありますか?もしそうなら-どのように?

4
SPRBRN

サーバーでSudoを使用してこのコマンドを実行し、最初にデータをキャプチャしてから、結果のファイルをワークステーションに送信してデータを確認できます。

Sudo tcpdump -i eth0 -s 65535 -w /tmp/wireshark
3
Lawrence

Sudoがないと、コマンドにはデバイスをキャプチャする権限がありません。

tcpdump:eth0:そのデバイスでキャプチャする権限がありません

しかしSudoの場合はそうですが、sshの後に実行されるため、リモートサーバーでSudoのパスワード入力を取得することはないため、ソリューションは-Sman Sudo)とパイプを使用しますSudoのパスワードは次のとおりです。

ssh [email protected] "echo Sudo_password | Sudo -S tcpdump -s 0 -U -n -w - -i eth0 not port 22" > /tmp/remote"

一方では、これはSudoパスワードpromtsを取得しない自動化に適しています。完全に自動化されたコード/スクリプトを使用するには、sshpass -p password ssh...を追加します。

ただし、セキュリティの観点から推奨されないsshセッション中にオープンテキストとして提供されたSudoパスワードを他の人が簡単に読み取ることができるサーバーでは。したがって、Sudosshを組み合わせて安全に使用するには、ssh -tを使用します

-tを使用すると、examplessh "Sudo command"| commandに対してssh -t server "cd path/to/directory && Sudo"|grep "text"をパイプすることはできませんが、IS -Sを使用してパスワードをエコーすることで可能です。例:ssh server 'echo password | Sudo -S ls -l'| grep 'a'

4