使用 SSH 将 tcpdump 导入 wireshark,并在 authorized_keys 中使用“command”

使用 SSH 将 tcpdump 导入 wireshark,并在 authorized_keys 中使用“command”

我们希望为应用程序测试启用实时网络跟踪。

我们希望在运行 tcpdump 的远程主机上授予尽可能少的权限/权利。

因此我尝试设置一个用于登录的授权密钥。

command="sudo tcpdump -n -i eth0 -s 65535 -w -" ssh-rsa AAAAB3NzaC....

当我从客户端计算机连接并使用时

ssh -i private.key [email protected] | wireshark -S -k -i -

Wireshark 抱怨并说“无法识别的 pcap 格式”

当我们运行

 ssh -i private.key [email protected] "tcpdump -i eth0 -w -" | wireshark -S -k -i -

并从授权密钥中删除命令“...”就可以了!

这两个变体有什么区别?如果我在两种情况下都删除“| wireshark...”,我就会在终端中看到二进制数据向我涌来...

如果存在差异,导致无论如何都无法实现这一点,你们知道在服务器端可以以某种方式预定义命令的方法吗?

正如我在一开始试图解释的那样,运行 wireshark 的客户端机器应受到尽可能的限制。

感谢您的帮助!

答案1

在第一种情况下,它是带有伪终端的正常 ssh 会话。

如果您只想要数据(不想要终端控制字符和类似的东西),您应该尝试ssh使用-T开关。

实现相同行为的另一种解决方案是将其放在文件no-pty中的命令旁边authorized_keys(感谢@mykel):

command="sudo tcpdump -n -i eth0 -s 65535 -w -",no-pty ssh-rsa AAAAB3NzaC....

相关内容