我正在尝试通过 Windows 机器上的 jumphost 捕获远程主机流量并显示在 Wireshark 中。
当使用 PUTTY GUI 并配置如下
- 为跳转主机创建并保存 SSH 会话(bastion-host)
- 连接 --> 数据 --> 配置自动登录用户名
- Connection --> SSH --> Auth --> jumphost private Key file for authentication configured
- 创建并保存另一个 SSH 会话 ( target-host ),其中将发生流量捕获
- 连接 --> 数据 --> 配置自动登录用户名
- 连接 --> 代理 --> 配置为代理和端口 22 的代理主机名
- 连接 --> 代理 --> Telnet 命令或本地代理命令为
plink "bastion-host" -agent -nc %host:%port
- 连接 --> SSH --> Remote command as
"sudo tcpdump -i ens5 -w - not port 22"
- Connection --> SSH --> Auth --> target-host private Key file for authentication configured
- 加载并打开保存的会话(目标主机)
结果是
- 我可以看到流量被捕获并显示在 Windows PUTTY 终端上。
- 而“tcpdump”实际上是在目标主机上执行的。
在这个阶段,我不知道如何将其重定向到 Wireshark。
接下来,这就是我想要实现的目标,通过命令行执行上面的设置。下面是完整的命令
plink.exe -proxycmd "putty.exe -ssh <username>@<jumphost-address> -i <private-key-file> -agent -nc <target-host>:22" -ssh <target-username>@<target-host> -i <target-private-key> "sudo tcpdump -ni ens5 -s 0 -w - not port 22" | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -
Wireshark 弹出但没有捕获流量,因为我看不到“tcpdump”命令在 .
为了确认 plink 有效,我在可直接访问的主机上测试了类似的命令,一切正常。Wireshark 弹出实时流量捕获。
plink.exe -ssh -pw <password> <username>@<my-host> "/usr/sbin/tcpdump -ni ens192 -s 0 -w - not port 22" | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -
所以,我认为我使用 plink 命令的方式有问题。感谢有人可以帮助我纠正它。
谢谢
操作系统:Windows 7 企业版,64 位
PUTTY:0.70 版
在此帖子中发布的答案提示正确命令对我有用。
我的最终命令是