通过中间服务器进行 Curl

通过中间服务器进行 Curl

我需要通过自定义端口从客户端 1 向服务器 2 发送带有 curl 的 PUT/GET/POST 请求。但是,服务器 2 仅接受来自服务器 1 的这些请求,如果直接连接,则拒绝客户端 1。通过服务器 1 将 curl 请求从客户端 1 隧道传输到服务器 2 的最佳方法是什么。

例如,在 SSH 的情况下,我通过创建隧道来实现这一点。所以我想知道 curl 是否存在类似的功能。

答案1

Curl 没有此功能,无论如何它都必须是服务器选项。对于 HTTP,这意味着配置某种代理。如果您无法修改服务器配置或安装代理,但可以使用 SSH,那么 SSH 就是您的唯一选择。

要通过 server1 将端口 80 隧道连接到本地计算机:

ssh -L 8080:server2:80 user@server1

然后curl localhost:8080将向server2上的80端口发送请求。

注意;某些服务器配置将拒绝向部分或全部用户进行端口转发。

答案2

您还可以使用单行命令,这样就无需在另一个过程中维护隧道。

ssh user@server1 curl http://server2/path -o -

换句话说,curl 不支持 ssh 隧道,但 ssh 隧道确实支持 curl(有点)...

相关内容