990 是什么
990 是 FTP over TLS 的注册端口,对应隐式加密模式:客户端一连上就协商 TLS,登录与命令都在加密连接内传输,与明文 FTP 的控制端口 21 形成对照。显式模式则在 21 上先发送升级指令,再切换到加密通道,两种模式常被混淆。
与基于 SSH 的文件传输不是一回事
加密 FTP 与基于 SSH 的文件传输是两套完全不同的协议,机制、客户端工具与配置项都不一样。对接前先确认对端产品支持哪一种,许多联调失败都源于双方文档里把这两个名字当成同一件事。
基本信息
| 服务 | ftps(FTP over TLS) |
|---|---|
| 协议 | TCP 990,注册含 UDP |
| 体系 | FTP 的加密形态 |
| 明文对照 | 21 控制、20 主动模式数据 |
| 安全等级 | 仅对接方白名单 |
典型使用场景
- 与要求加密传输的合作伙伴交换文件
- 替代明文 FTP 以满足内部合规要求
- 排查登录成功但目录列不出内容的问题
- 对接前确认对端支持隐式还是显式加密模式
- 资产核查时区分加密 FTP 与基于 SSH 的文件传输
握手与客户端验证
握手与客户端验证
openssl s_client -connect ftp.example.com:990 </dev/null | head -5 # 隐式模式直接协商 TLS
lftp -u user,pass -e 'set ftp:ssl-force true; ls; bye' ftp://ftp.example.com # 强制加密访问被动模式端口范围
被动模式端口范围
# 服务端需要为被动模式开放一段数据端口,例如:
# PassivePorts 30000 30100
# 防火墙必须同时放行该端口段
# 否则会出现登录成功、列目录或传输卡住的典型故障模式对照
| 模式 | 控制端口 | 加密方式 |
|---|---|---|
| 隐式加密 | 990 | 连接即协商 TLS |
| 显式加密 | 21 | 先发升级指令再切换 |
| 明文 FTP | 21 | 无加密,不建议使用 |
只放行控制端口而忘记被动模式的数据端口段,会出现「登录成功、列目录或传输卡死」的典型现象,排查时容易被误判成权限问题或服务端故障。
主动与被动模式的数据连接方向不同:主动模式由服务端反向连接客户端,在客户端有防火墙时经常失败。现代部署应优先使用被动模式并固定端口范围,便于策略规划。