通过 SSH 传输 tcpdump 流量 - 但没有 root ssh 访问权限

通过 SSH 传输 tcpdump 流量 - 但没有 root ssh 访问权限

情况

我想使用 Wireshark 来分析我们一台服务器上的流量,但我不想在服务器本身上安装 Wireshark。我明白我可以管道 tcpdump 流量通过 SSH 连接到安装了 Wireshark 的本地计算机 (Ubuntu)。

问题

我无法使用 root 帐户登录服务器,因为该帐户已被禁用。我有 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-Sman sudosudo

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 密码,从安全角度来看,不建议这样做。所以,要拥有sudossh安全使用ssh -t

例如,-t不可能进行管道传输,但可以使用 -S 和回显密码,例如ssh "sudo command"| commandssh -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

相关内容