我需要通过自定义端口从客户端 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(有点)...