我正在尝试从 Windows 机器通过 jumphost 捕获远程主机流量并在 Wireshark 中显示。
当使用 PUTTY GUI 并按如下方式配置时
- 创建并保存 SSH 会话(堡垒主机) 为跳伞者
- 连接-->数据-->自动登录用户名已配置
- 连接-->SSH-->身份验证-->配置用于身份验证的jumphost私钥文件
- 创建并保存另一个 SSH 会话(目標主機)进行流量捕获的地方
- 连接-->数据-->自动登录用户名已配置
- 连接 --> 代理 --> 代理主机名配置为代理和端口 22
- 连接 --> 代理 --> Telnet 命令或本地代理命令
plink "bastion-host" -agent -nc %host:%port
- 连接 --> SSH --> 远程命令
"sudo tcpdump -i ens5 -w - not port 22"
- 连接--> SSH--> 认证--> 目标主机认证私钥文件配置
- 加载并打开已保存的会话(目標主機)
结果是
- 我可以看到流量被捕获并显示在 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 Enterprise,64 位
PUTTY:版本 0.70
答案1
答案发布在此帖子中提示正确的命令对我有用。
我最后的命令是
plink -proxycmd "plink <username>@<jumphost-address> -i <private-key-file> -nc <target-host>:22" <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 -