我开发并支持一个使用 (S)FTP 将文件下载到公司服务器的程序。公司客户经常要求我的程序通过代理而不是直接连接。不幸的是,(S)FTP 代理似乎没有标准化,特别是在身份验证方面。
我想找到一些与 (S)FTP 代理交互的标准方法,而无需事先了解供应商。
如果不可能的话,我想汇总一下不同 (S)FTP 代理类型的列表,它们的优缺点(如果我可以选择使用哪种),如何使用它们,实施它们的供应商的示例,更多信息的链接等。
答案1
以下是我目前发现的内容:
- 检查点登录语法
- 适用于 FTP
- 通过 USER 和 PASS 命令向代理传递额外信息来工作。
- 由于不需要特殊命令,每个支持 FTP 的程序都应该能够使用此方法,即使它没有内置代理概念。您只需更改它使用的用户/密码即可。
- 用户:ftp_用户名@proxy_用户名@ftp_host
- 密码:ftp_password@proxy_password
- 使用者:Bluecoat ProxySG,可能还有其他人。
- 更多细节:https://kb.bluecoat.com/index?page=content&id=KB2898
- Raptor 登录语法
- 适用于 FTP
- 与 Checkpoint 类似,只是使用 ACCT 传递代理密码。
- 要求程序理解 ACCT,但最好将密码分开。与 Checkpoint 不同,支持密码中包含 @ 字符。
- 用户:ftp_用户名@ftp_host 代理用户名
- 密码:ftp_密码
- 帐户:代理密码
- 使用者:Bluecoat ProxySG,可能还有其他人。
- 更多详细信息:与上述链接相同(超级用户限制我使用 2 个链接)
- 袜子
- 适用于任何协议
- SOCKS 是一种标准化的代理协议。
- SOCKS 不仅可用于 FTP,也可用于完全不同的协议。
- 如果程序理解并能使用 SOCKS,这可能是最灵活的解决方案。但是,实现可能更复杂。
- 更多详细信息:维基百科上的袜子
- HTTP 连接
- 适用于 FTP
- 首先从与代理服务器建立 HTTP 连接开始。通过代理建立连接后,仍使用 TCP,但客户端可以自由切换到其他协议(如 FTP)。
- 这可能是最简单、最灵活的选择。缺点是程序除了支持 FTP 之外,还必须支持初始 CONNECT 的 HTTP 协议。
- 更多细节:http://en.wikipedia.org/wiki/HTTP_tunnel#HTTP_CONNECT_Tunneling
- Filezilla 中引用的其他方法。我还没有找到这些问题的解释。
- 用户@主机
- 命令顺序(逗号不是文字):USER %s、PASS %w、USER %u@%h、PASS %p、ACCT %a
- 地点
- 命令顺序(逗号不是文字):USER %s、PASS %w、SITE %h、USER %u、PASS %p、ACCT %a
- 打开
- 命令顺序(逗号不是文字):USER %s、PASS %w、OPEN %h、USER %u、PASS %p、ACCT %a
- 用户@主机
- 供应商列表
- 看http://www.gartner.com/technology/reprints.do?id=1-1AOGE0B&ct=120529&st=sb%2520。
- 这不提供实施细节,但有助于了解产品范围。我认为安全 Web 网关是代理的超集(即提供其他服务,如恶意软件清除,可能还有监控)。通常,当您通过公司代理时,它将是这些 SWG 之一。