我正在尝试在几台远程计算机上启动 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 手册页更多细节。