通过 EC2 实例之间的 SSH 隧道使用 socks 代理的 curl 失败:“curl:(7) 无法接收 SOCKS5 连接请求确认。”

我在通过 AWS 中的两个 EC2 实例之间的简单 SSH 隧道设置 socks 代理时看到 curl 问题。

box1 $ ssh -v -D 12345 ubuntu@box2 -N
[...]

socks 代理似乎在端口 12345 上正常运行,现在当我尝试通过它卷曲时:

box1 $ curl -x socks5h://localhost:12345 www.google.com
curl: (7) Failed to receive SOCKS5 connect request ack.

回到 ssh -D 窗口,当我运行 curl 命令时出现此错误:

debug1: Connection to port 12345 forwarding to socks port 0 requested.
debug1: channel 1: new [dynamic-tcpip]
channel 1: open failed: administratively prohibited: open failed
debug1: channel 1: free: direct-tcpip: listening port 12345 for www.google.com port 80, connect from 127.0.0.1 port 36240 to 127.0.0.1 port 12345, nchannels 2

任何人都可以对这里发生的事情有所了解吗?

stack overflow Curl failure with socks proxy through SSH tunnel between EC2 instances : "curl: (7) Failed to receive SOCKS5 connect request ack."
原文答案

答案:

作者头像

可能是因为域地址解析为 IPv6,而您的 socks5 代理不支持。

在这种情况下, curl --ipv4 ... 将正常工作