通过中间服务器卷曲

Arm*_*man 3 tunneling curl

我需要通过自定义端口从 client1 到 server2 发送带有 curl 的 PUT/GET/POST 请求。但是,server2 只接受来自 server1 的这些请求,如果直接连接,则拒绝 client1。通过 server1 将 curl 请求从 client1 隧道传输到 server2 的最佳方法是什么。

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

小智 7

您也可以使用 oneliner,这样您就不必在另一个过程中维护隧道。

ssh user@server1 curl http://server2/path -o -
Run Code Online (Sandbox Code Playgroud)

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


Ale*_*bes 5

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

通过 server1 将端口 80 隧道传输到您的本地机器:

ssh -L 8080:server2:80 user@server1
Run Code Online (Sandbox Code Playgroud)

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

笔记; 某些服务器配置将拒绝向某些或所有用户转发端口。