服务器FTP用的协议是FTP、FTPS和SFTP三类,其中SFTP基于SSH、FTPS基于SSL/TLS,两者都通过加密传输弥补传统FTP的明文漏洞,性能要求不苛刻时建议优先选SFTP。
服务器FTP用的什么协议?先分清这三个
很多朋友问”服务器ftp用到的协议是什么”,其实答案不是单一的,你把文件传到服务器,可能走的是最老的FTP协议,也可能是加了加密的FTPS,或者干脆是走SSH通道的SFTP,三者名字相似,底层完全不一样。
FTP:老牌文件传输协议
FTP诞生于1971年,后来由RFC 959规范定型,它使用TCP协议,默认端口21用于控制命令,数据传输则另开端口,FTP本身不加密,账号密码和文件内容都是明文在网络上跑,所以在公网环境里裸奔非常危险。
FTPS:给FTP加了安全锁
FTPS全称FTP over SSL/TLS,本质还是FTP协议,只是在传输前先通过SSL/TLS握手加密,显式FTPS(FTPES)默认也用21端口,连接后客户端发送AUTH TLS升级为加密连接;隐式FTPS走990端口,连接一开始就要求加密。
SFTP:更现代的加密文件传输
SFTP全称SSH File Transfer Protocol,注意它和FTP不是一个物种,SFTP运行在SSH协议的22端口上,把文件传输命令封装在SSH加密隧道里,天然支持公钥认证、目录操作、断点续传,国内外云服务器厂商的管理后台里,SFTP是默认标配。
三者关键区别可以用一张表说清楚:
| 协议 | 底层基础 | 默认端口 | 是否加密 | 适合场景 |
|---|---|---|---|---|
| FTP | TCP | 21 | 否 | 内网/旧系统 |
| FTPS | SSL/TLS | 21或990 | 是 | 需要兼容FTP的加密场景 |
| SFTP | SSH | 22 | 是 | 公网传输/运维自动化 |

行业共识认为,新搭建的系统应该把SFTP作为首选,老系统实在无法切换时,至少用FTPS托底。
FTP协议端口21和被动模式:连接不上的排查思路
你折腾了半天,发现FTP协议端口21是通的,但客户端依然超时,十有八九是栽在被动模式上。
主动模式与被动模式的差别
FTP有两种数据连接方式,主动模式(Active)下,服务器主动连回客户端的随机端口;被动模式(Passive)下,客户端主动连服务器的随机端口,由于客户端通常在NAT后面,主动模式经常被路由器拦下,所以现在绝大多数客户端默认走被动模式。
被动模式要求服务器开放一段端口范围(比如1024-65535里的某个区间),控制连接走21,数据连接走这些高位端口,如果服务器的防火墙或云安全组只放行了21,被动数据传输就会卡死。
为什么端口21明明打开了还是连不上
问题往往不在21,而在被动端口没放行,以简米云为例,你可以在安全组里同时放行21端口和指定的被动端口范围;在自己机房服务器上,要把iptables或firewalld对应规则加上,据统计,相当一部分”连接超时””列表目录失败”都是这个原因。
以宝塔面板为例放行被动端口
- 登录宝塔面板,找到”安全”菜单。
- 在端口放行里添加21端口,以及你设置的被动端口区间(例如39000-40000)。
- 到vsftpd配置文件/etc/vsftpd.conf里,确认如下参数:
pasv_enable=YES
pasv_min_port=39000
pasv_max_port=40000
- 保存后重启vsftpd服务:systemctl restart vsftpd。
这样客户端连接时就能顺利进入被动数据通道了。
FTP与SFTP选型:内网传输、外网协作怎么选
选型不是越新越好,得看场景。
场景选择建议
- 纯内网局域网传文件,比如公司内部共享几百MB素材,FTP裸奔也没大事,速度还快。
- 跨公网传设计稿、备份包,强烈建议SFTP,加密防止抓包泄密。
- 老设备或定制系统只认FTP,那就用FTPS,保留原有兼容性同时加上加密。
- 定时任务做备份,脚本里用sftp命令配合密钥登录,比密码登录更稳。

性能与安全权衡
FTP不加密,CPU开销小,大数据传输时速度上限更接近带宽极限,SFTP因为要加解密,对CPU有一定占用,但现代服务器处理器基本无感,对绝大多数用户来说,安全收益远大于那一点性能损失,如果你追求极限速度,可以在同一台机器上同时开启SFTP和FTP,按目录区分用途。
云服务器FTP价格与搭建方案:小成本也能跑起来
很多个人站长关心”云服务器ftp价格”到底贵不贵,其实FTP协议本身是免费开源软件,你要付的钱主要是云服务器租用费和带宽流量费,各大云厂商的轻量应用服务器,一年几百块就能跑动SFTP;带宽需要额外购买,国内地域如华东、华北的带宽单价相差不大,按量计费更灵活。
一台云服务器搞定SFTP
与其单独装FTP,不如直接用系统自带的SFTP,以Ubuntu 22.04为例:
- 检查SSH是否开启:systemctl status ssh。
- 创建专用账号:adduser ftpuser。
- 限定目录权限,编辑/etc/ssh/sshd_config,加入:
Subsystem sftp internal-sftp
Match User ftpuser
ChrootDirectory /home/ftpuser
ForceCommand internal-sftp
- 重启SSH服务:systemctl restart sshd。
这样客户端用FileZilla连接时,协议选择SFTP,端口22,就能像传统FTP一样拖拽上传下载,全程加密,如果你有公网IP需求,云服务器自身就带了,无需额外购买。
本地服务器FTP连接不上?先从这四处查起
自己拿一台旧PC搭FTP服务器,客户端总提示连不上,别急,按顺序排查。
查端口监听状态

在服务器上执行:netstat -antlp | grep :21,没有输出说明FTP服务没起来;有输出但显示在127.0.0.1,说明只监听了本机,需要改成0.0.0.0,改完重启服务。
查用户权限和目录
FTP登录报530,多是因为本地用户账号没加FTP权限,或者用户主目录权限不对,在vsftpd配置文件里确认local_enable=YES,write_enable=YES,并把登录用户的home目录属主设为该用户。
查客户端模式
FileZilla默认是主动还是被动?连接后看到错误”ECONNREFUSED”或者”连接超时”,切到被动模式再试,如果被动还是不行,回看前面提到的被动端口配置。
查防火墙
服务器端放开21和被动端口后,别忘了客户端的防火墙也可能拦截服务器回连请求,先临时关闭客户端防火墙做交叉测试,能连上再添加白名单。
服务器FTP协议Q&A
问:FTP和SFTP能共用端口21吗?
不能,SFTP依赖SSH的22端口,21端口是FTP控制端口,如果你在同一个端口上同时监听两种协议,会互相冲突,日常使用中,把SSH和FTP服务分开端口管理即可。
问:Windows下怎么开通FTP协议?
Windows的IIS自带FTP服务,添加角色时勾选FTP服务器,然后创建FTP站点,Windows Server 2026还支持FTPS,需要提前导入SSL证书,如果只是临时传文件,用PowerShell开个SMB共享也挺方便。
问:为什么报”530 Login incorrect”?
常见于密码正确、账号也能SSH登录,但FTP服务刻意拒绝,原因是vsftpd设置了userlist_deny=YES,而该用户被写进了user_list文件,把用户从列表中移除,或者把规则改成userlist_deny=NO,再重启服务,问题就解决了,FTP协议本身不加密,账号密码泄露风险高,建议尽快切换FTPS或SFTP。
服务器FTP协议的选择,核心就是一句话:明文环境选FTP,公网环境优先SFTP,老系统兼容才选FTPS,按这个思路配置,基本不会踩坑。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/913600.html


评论列表(3条)
读了这篇文章,我深有感触。作者对服务器的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!
读了这篇文章,我深有感触。作者对服务器的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!
这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是服务器部分,给了我很多新的思路。感谢分享这么好的内容!