我正尝试从公司 HTTP 代理后面的 Windows PC 连接到 SSH 服务器。
这个技巧在 Debian 下使用ncat
nmap 包中的 OpenSSH 客户端可以工作,但在 Windows 下使用 Plink 0.70 + Ncat 7.70 则不行(https://nmap.org)。Putty 也很好用,不过对我来说使用纯 plink 会更好。
Plink 有该-proxycmd
选项,看起来与ProxyCommand
OpenSSH 中的选项类似。但是,它不能按预期工作(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