想把文件传到服务器上,FTP仍然是最直接的一条路:在服务器端开启FTP服务并放行21端口,在本地用FileZilla、WinSCP或系统自带命令行连上去,把文件拖进目标目录或执行put命令即可。真正容易卡住的不是“会不会传”,而是被动模式端口没开、目录权限不对、传上去的文件权限变成600导致网站打不开,下面按实操顺序拆开讲。
FTP上传的原理:一次上传在后台发生了什么
FTP是上世纪70年代就定型的协议,到今天仍然大量存在于运维现场,它的工作方式很朴素:客户端先连服务器的21端口建立控制连接,用来发指令、看目录;真正传文件时再单开一条数据连接。
控制连接与数据连接是两条路
- 控制连接全程保持,登录、切换目录、列文件都走它。
- 数据连接每次传文件或列目录时临时建立,传完就断。
- 主动模式下由服务器从20端口反向连客户端,客户端在防火墙或NAT后面时经常失败。
- 被动模式下由服务器开一个随机高位端口等客户端来连,这也是今天默认该用的模式。
为什么老服务器还在用FTP
行业共识认为,FTP的优势不在安全,而在兼容性,大量老旧虚拟主机、工业设备、嵌入式系统只认FTP;很多建站面板一键就能开FTP账号;脚本化上传用lftp、curl也能一把梭,代价是账号密码和文件内容全程明文,公网上裸奔风险很高,所以现在更推荐FTPS或SFTP。
Windows服务器怎么用FTP上传网站文件
这是最常见的场景:一台Windows Server,IIS跑着站点,需要把本地做好的页面传上去。
服务端先把FTP角色装上
- 打开“服务器管理器”,添加角色和功能,勾选“Web服务器(IIS)”下的“FTP服务器”。
- 在IIS管理器里右键网站,选“添加FTP站点”,绑定IP和端口21。
- 认证选“基本”,授权规则给对应用户“读取+写入”权限。
- SSL设置按需选择,公网环境建议至少用FTPS。
客户端用FileZilla连上去
- 打开FileZilla,顶部依次填主机IP、用户名、密码、端口21,点“快速连接”。
- 左侧本地窗格定位到你的项目目录,右侧服务端窗格进入站点根目录,
C:\inetpub\wwwroot。 - 选中文件右键“上传”,或直接拖拽。
- 传输菜单里确认使用二进制模式,避免图片、压缩包被当文本转换损坏。
- 上传完成后在浏览器刷新页面验证。
命令行也能传,适合批量
在Windows的cmd里执行:
ftp 203.0.113.10
输入用户名、密码
binary
cd /www/wwwroot/site
lcd D:\dist
mput .html
bye
binary 一定要先敲,否则二进制文件会被破坏;lcd 切本地目录,cd 切远端目录,mput 批量上传。
ftp上传文件到服务器失败怎么办
先别急着重装,按“连不上”和“传不上”两类分开排查,效率最高。
连不上:先看网络和端口
- 本机
telnet 服务器IP 21,通不了就是网络层问题。 - 云服务器要去控制台安全组放行21端口,本机防火墙也要放行出站。
- 服务器本机防火墙:Linux用
firewall-cmd --add-port=21/tcp --permanent后--reload;Windows在高级防火墙里给FTP开入站规则。
连上了但列不出目录或传一半卡死
九成是被动模式端口没放行。
- vsftpd里加
pasv_enable=YES、pasv_min_port=30000、pasv_max_port=30100。 - 防火墙同步放行
30000-30100/tcp。 - 客户端里勾选“被动模式”,别用主动。
能传但传不上去,报权限拒绝
- 检查FTP账号对目标目录有没有写权限,Linux下
chown和chmod一起看。 - 开了
chroot_local_user=YES却没加allow_writeable_chroot=YES,用户会被锁在家目录且无法写入。 - 磁盘满了、inode用尽也会报错,
df -h和df -i各看一眼。 - SELinux没放行:
setsebool -P ftpd_full_access on。
ftp和sftp上传服务器哪个快
很多人以为加密一定慢,实际要分情况,下面这张表把关键差异列清楚:
| 对比项 | FTP | SFTP |
|---|---|---|
| 默认端口 | 21(数据连接另开) | 22 |
| 加密 | 无,明文 | SSH加密 |
| 穿透防火墙 | 被动模式需开一段端口 | 单端口,最省心 |
| 小文件密集传输 | 建连开销小,略占优 | 每文件加密开销略高 |
| 大文件传输 | 局域网内速度接近网卡上限 | 现代CPU下差距很小 |
| 安全性 | 低 | 高 |
结论很明确:内网、老设备、纯批量同步可以继续用FTP;跨公网、有账号密码和业务数据,优先SFTP或FTPS,业内专家指出,近年因明文FTP导致凭据泄露的事件中,多数发生在公网直连场景。
云服务器FTP上传教程:安全组和端口别漏
买了云主机自己搭环境,最容易漏的就是云平台那层网络策略。
安全组放行顺序
- 登录云控制台,找到实例的 security group。
- 入方向添加规则:协议TCP,端口21,源地址填你自己的办公出口IP,别图省事写0.0.0.0/0。
- 再放行被动端口段
30000-30100。 - 系统内防火墙重复一遍,两层都要通。
vsftpd最小可用配置
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30100
改完 systemctl restart vsftpd,注意 local_umask=022 决定上传后文件权限是644、目录755,这直接关系到Web站点能不能正常访问。
用lftp做整站同步
lftp -u 用户名,密码 -e "mirror -R ./dist /www/wwwroot/site; bye" 服务器IP
mirror -R 是本地推送到远端,只传有变化的文件,比一个个拖快得多,适合每次发版。
上传工具怎么选,免费的和收费的差在哪
- FileZilla:免费开源,跨平台,站点管理器好用,日常首选。
- WinSCP:Windows免费,SFTP/FTPS都支持,自带命令行和脚本同步。
- FlashFXP、CuteFTP:收费,卖点在队列管理、计划任务和客服,个人用户没必要。
- 系统自带ftp命令:零安装,适合写进bat或shell脚本做定时任务。
- 宝塔面板文件管理器:不装客户端也能传,小文件应急很顺手。
多数情况下,免费工具已经覆盖九成需求;愿意付费的,通常是要批量调度和多人协作的团队。
传完之后必须做的三件事
- 校验完整性:本地和远端各跑一次
md5sum 文件名,值一致才算传对。 - 看权限:网站目录下文件644、目录755,属主给Web运行用户,否则页面报403。
- 留备份:覆盖上传前把旧版本打包,出问题能回滚。
如果是定期发布,把lftp或WinSCP脚本挂到计划任务里,比每次手动拖更稳。
FTP上传这件事,工具几分钟就能上手,真正决定成败的是端口、权限、模式这三个细节,把服务端配置和防火墙一次理顺,后面就只是重复动作。
关于FTP上传服务器的常见问题
FTP上传服务器需要开放哪些端口?
控制端口固定21,主动模式还需要服务器20端口出站到客户端;被动模式需要额外开放一段配置好的高位端口,例如30000到30100,云服务器还要在安全组里同步放行,只开21往往能登录却列不出目录,走SFTP则只需要22一个端口。
FTP上传的文件权限变成600导致网站打不开怎么处理?
这是umask设置问题,vsftpd里把 local_umask 设为022,上传后文件即为644、目录755,已经传错的文件可以批量修正:find /www/wwwroot/site -type f -exec chmod 644 {} \;,目录用 -type d -exec chmod 755 {} \;,再把属主改成Web运行用户。
服务器FTP上传速度慢是什么原因?
常见原因有三个:被动模式端口段太窄导致频繁重连;传输大量小文件时每条数据连接都要重新建连;以及客户端没开二进制模式造成反复重传,把被动端口段放宽到100个以上、小文件先打包成zip再传、必要时改用lftp的并发传输,速度通常能明显回升。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/772237.html


