使用 plink 和 netcat 通过 HTTP 代理连接到 SSH 服务器

使用 plink 和 netcat 通过 HTTP 代理连接到 SSH 服务器

我正尝试从公司 HTTP 代理后面的 Windows PC 连接到 SSH 服务器。

这个技巧在 Debian 下使用ncatnmap 包中的 OpenSSH 客户端可以工作,但在 Windows 下使用 Plink 0.70 + Ncat 7.70 则不行(https://nmap.org)。Putty 也很好用,不过对我来说使用纯 plink 会更好。

Plink 有该-proxycmd选项,看起来与ProxyCommandOpenSSH 中的选项类似。但是,它不能按预期工作(SSH 服务器在端口 443 上运行):

plink.exe -C -ssh -P 443 -i my_pvt_key.ppk -proxycmd "ncat --verbose --proxy-type http --proxy 192.168.101.200:3128 %host %port" -sshlog sshlog.txt [email protected]

该命令立即返回“严重错误:服务器意外关闭网络连接”。

Putty 日志:

=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2018.07.19 07:38:28 =~=~=~=~=~=~=~=~=~=~=~=
Event Log: Writing new session log (SSH packets mode) to file: sshlog.txt
Event Log: Starting local proxy command: ncat --verbose --proxy-type http --proxy 192.168.101.200:3128 port
Event Log: We claim version: SSH-2.0-PuTTY_Release_0.70
Event Log: Server unexpectedly closed network connection

日志的第三行令人困惑。命令末尾有“port”一词,它应该被替换为实际端口。主机192.0.2.123根本没有显示。

该命令ncat --verbose --proxy-type http --proxy 192.168.101.200:3128 192.0.2.123 443本身似乎运行良好。因此,我猜想问题在于 Plink 无法正确解析 ncat 命令中的参数。我可能错了。

有什么想法可以解决这个问题吗?

答案1

在 Putty 中,在配置->连接->代理中,您可以直接配置 HTTP 代理,而无需使用ncat

在 中plink,您可以参考 Putty 配置。帮助文本说

“host” 也可以是 PuTTY 保存的会话名称

因此只需plink使用您保存的配置进行调用即可。

答案2

感谢您的提问,我通过打开 ssh 在 Windows 10 1903 中成功了,下面是我的命令:

 ssh [email protected] -o "ProxyCommand C:\Program Files (x86)\Nmap\ncat.exe --verbose --proxy-type http --proxy 127.0.0.1:10801 %h %p" -v

使用 plink:版本 0.71(64 位),OP 命令可以正常工作,但 cmd 将显示一些未识别的无色图表。在 Windows 10 中最好使用 open ssh?

plink.exe -C -ssh -P 27158 -i C:\Users\xxx\.ssh\test.ppk -proxycmd "ncat --verbose --proxy-type http --proxy 127.0.0.1:10801 %host %port" [email protected] sshlog.txt

相关内容