FTPS 登录成功只能证明控制连接可用。目录列表需要另一条连接,因此代理可能允许登录却拦截下一步。

对于显式 FTPS 服务器,用 WinSCP .NET 配置控制路由和被动模式:

var options = new WinSCP.SessionOptions
{
    Protocol = WinSCP.Protocol.Ftp,
    HostName = "ftp.example.net",
    PortNumber = 21,
    UserName = ftpUser,
    Password = ftpPassword,
    FtpSecure = WinSCP.FtpSecure.Explicit,
    FtpMode = WinSCP.FtpMode.Passive
};

options.AddRawSettings("ProxyMethod", "3");
options.AddRawSettings("ProxyHost", "proxy.example.net");
options.AddRawSettings("ProxyPort", "8080");

ProxyMethod 的取值 3 选择 HTTP CONNECT。请通过应用程序正常的 WinSCP Session 生命周期打开这些选项,并在中间设备要求认证时添加 ProxyUsername 和 ProxyPassword 原始设置。

追查列表失败

在会话日志中查看协商出的被动数据端点及其连接失败。代理必须同时放行该目标和端口以及 FTP 控制端点。因此,只允许 CONNECT 到控制端口的规则可能接受登录却拒绝列表。

只改控制端口无法修复被阻断的数据路径。检查网络策略时,请使用日志中记录的数据端点。

本示例在 21 端口启动显式 FTPS 并协商 TLS。对于隐式 FTPS 端点,请使用对应的 FtpSecure 模式和服务器端口。两种情况下都应使用服务器实际的 TLS 主机名和证书校验配置。

相关文章