通过 HTTP 代理使用 FTP 有两种不同模式
区分获取 FTP URL 的 HTTP 网关与通过 CONNECT 隧道说 FTP 的 curl。
HTTP 代理后面的 FTP URL 可以使用以下两种安排之一:
| 模式 | curl 发送什么 |
|---|---|
| HTTP FTP 网关 | 要求代理获取 FTP 资源的 HTTP 请求。 |
| CONNECT 隧道 | 隧道请求,随后通过已接受的连接传输原生 FTP 协议字节。 |
此命令使用网关安排:
curl --proxy http://203.0.113.10:8080 \
ftp://files.example.com/report.txt替换文档端点和文件目标位置。正如 curl 的 HTTP 代理文档 所解释,在该模式下 curl 与代理以 HTTP 通信。成功获取文件并不能证明每一项 FTP 特定操作。
当服务旨在通过 CONNECT 承载原生 FTP 时,请添加 --proxytunnel 。它必须允许必要的目标连接。FTP 具有 独立的控制连接和数据连接,因此被动地址/端口、CONNECT 规则和服务器配置可能在登录成功后导致传输失败。
保留失败的阶段:CONNECT 被拒绝、FTP 登录失败或被动数据失败。把另一个目标编码进 USER/PASS 的服务专用网关使用其自己的登录约定;这些既不是普通 HTTP 代理凭据,也不是 SOCKS 协商。
使用文档记载的代理模式和文件服务的安全配置。仅靠隧道并不会加密明文 FTP 凭据或文件数据。