使用 ssh 在没有 tty 的远程机器上运行 tcpdump

使用 ssh 在没有 tty 的远程机器上运行 tcpdump

我正在尝试在几台远程计算机上启动 tcpdump 以使用脚本执行一些网络分析,但无法正确运行它。我想使用的命令是:

ssh 用户@主机“nohup sudo /usr/sbin/tcpdump udp -l -s 68 -n -v -i eth0 1>tcpdump.txt 2>tcpdump.err &”

目的是远程启动 tcpdump,将结果通过管道传输到文件并立即返回。由于远程机器上没有安装键盘,我得到的只是

sudo:没有 tty 存在并且没有指定 askpass 程序

写在 tcpdump.err 中。我还尝试过:

  • 在 bash 脚本中编写命令并远程运行该脚本
  • 将 sudo 部分包含在“脚本”命令中(脚本 -c‘nohup sudo...’)

但没有成功。还有其他我可以尝试的替代方案吗?

答案1

您在命令中使用了 sudo,这将需要身份验证,除非远程主机上另有配置。除非您尝试类似以下操作,否则您将被迫输入密码进行身份验证

user NOPASSWD: /usr/sbin/tcpdump

在远程主机上的 sudoers 文件中。

这可能会带来严重的安全隐患;如果有人以此用户身份侵入系统(或者只是坐在其已登录的控制台之一前),他们就可以 tcpdump 往返于该主机的所有流量,而无需以 root 或该用户的身份进行身份验证。

查看 tag_spec 部分sudoers 手册页更多细节。

相关内容