导读:本期聚焦于小何创作的《Windows系统如何通过FTP上传文件到Linux云服务器?完整操作步骤与避坑要点》,敬请观看详情。文件传不上服务器,是不少人第一次接触Linux云服务器时最头疼的问题。命令行不熟、scp参数看不懂、图形化工具不知道选哪个,其实FTP依然是Windows向Linux传文件最直观的方式之一。本文将从环境准备讲起,带你先在Linux端安装并配置vsftpd服务,创建专用FTP用户并设置目录权限,再演示Windows端用资源管理器和FileZilla两种方式连接上传,最后整理被动模式、防火墙放行、权限报错等常见问题的排查思路,帮你把文件传输这条路彻底打通。

把本地Windows电脑上的网站源码、安装包或配置文件传到Linux云服务器,是部署服务前的必经环节。FTP协议虽然年头不短,但胜在操作直观、工具成熟,尤其是对不熟悉命令行的新手来说,图形化的FTP客户端几乎是零学习成本。整个过程分为两大部分:Linux服务器端搭建FTP服务,Windows客户端连接上传。下面按顺序把每一步讲透,顺带把容易踩的坑一起说清楚。

Windows系统如何通过FTP上传文件到Linux云服务器?完整操作步骤与避坑要点

第一步:在Linux服务器上安装并配置vsftpd服务

Linux下的FTP服务端软件有不少选择,vsftpd(Very Secure FTP Daemon)因为安全性好、配置简单,是绝大多数发行版的默认推荐。以CentOS为例,执行以下命令即可完成安装并启动服务:

# 安装vsftpd
yum install -y vsftpd
# 启动服务并设置为开机自启
systemctl start vsftpd
systemctl enable vsftpd
# 查看服务状态,确认active (running)
systemctl status vsftpd

Ubuntu或Debian系统则把yum换成apt即可:apt install -y vsftpd。安装完成后先别急着连,需要修改配置文件。vsftpd的主配置文件位于/etc/vsftpd/vsftpd.conf,用vim或nano打开后,重点确认以下几项配置:

# 是否允许本地系统用户登录(本地用户模式)
local_enable=YES
# 允许上传文件(写权限全局开关,关闭时任何用户都无法写入)
write_enable=YES
# 本地用户上传文件的默认权限掩码,022表示文件权限为644
local_umask=022
# 限制用户只能待在自己的主目录内,不允许切换到其他目录
chroot_local_user=YES
# 当用户被限制在主目录时,允许其具有写权限(否则登录会报错)
allow_writeable_chroot=YES

这里有个非常经典的坑:开启了chroot_local_user=YES之后,如果用户主目录本身是可写的,较新版本的vsftpd会直接拒绝登录,日志里提示500 OOPS: vsftpd: refusing to run with writable root inside chroot()。解决办法就是再加上allow_writeable_chroot=YES这一行,或者在主目录下单独建一个可写的子目录用于存放文件。改完配置记得重启服务:systemctl restart vsftpd

第二步:创建FTP专用用户并处理防火墙放行

不建议直接用root账户登录FTP,一是vsftpd默认禁止root登录(在/etc/vsftpd/ftpusersuser_list文件中root被列入黑名单),二是安全性太差。正确做法是创建一个专用账号,并规划好它的主目录:

# 创建一个不允许通过SSH登录、只用于FTP的用户,主目录设为/data/ftp
useradd -d /data/ftp -s /sbin/nologin ftpuser
# 设置密码
passwd ftpuser
# 创建文件存放目录并授权
mkdir -p /data/ftp/upload
chown -R ftpuser:ftpuser /data/ftp
chmod 755 /data/ftp
chmod 755 /data/ftp/upload

注意-s /sbin/nologin这个参数,它禁止该用户通过SSH登录服务器,只能走FTP通道,即使账号密码泄露,攻击者也无法拿到shell,安全等级提升不少。权限方面,建议主目录保持755、不要给777,目录权限给到777时,部分vsftpd配置会直接判定为不安全而拒绝访问,这也是新手常遇到的OOPS报错来源之一。

接下来是防火墙,这一步漏掉的话客户端会一直卡在连接超时。除了放行20、21端口,还要处理被动模式的端口范围。先在vsftpd.conf末尾追加:

# 指定被动模式的端口范围,方便防火墙统一放行
pasv_min_port=40000
pasv_max_port=40010

然后放行防火墙。CentOS 7以上使用firewalld的写法如下:

# 放行FTP服务
firewall-cmd --permanent --add-service=ftp
# 放行被动模式端口段
firewall-cmd --permanent --add-port=40000-40010/tcp
# 重新加载规则
firewall-cmd --reload

另外别忘了云服务器的安全组规则。阿里云、腾讯云等厂商的控制台里都有安全组设置,需要在入方向放行21端口和40000到40010端口段。很多人在系统防火墙里折腾半天,结果发现是安全组没开,白白浪费大量时间,这一点务必优先检查。

第三步:Windows端连接上传的三种方式

第一种最简单,直接用Windows自带的资源管理器。打开文件资源管理器,在地址栏输入ftp://服务器公网IP回车,输入用户名密码后就能看到服务器上的目录,文件可以直接拖拽进去。这种方式胜在零安装,但缺点也明显:不支持断点续传、传输大文件容易中断、出错提示含糊,只适合临时传几个小文件。

第二种是命令行方式,在cmd或PowerShell中执行ftp 服务器IP,然后用user命令登录,put 本地文件路径 远程路径上传,get下载。比如本地文件在D盘的软存放目录,写成put D:\soft\nginx.rpm /upload/nginx.rpm即可。命令行适合写脚本做自动化定时上传,但交互体验一般,路径中有空格时还要额外加引号处理。

第三种推荐使用FileZilla这类专业客户端。下载安装后,在顶部依次填入主机IP、用户名、密码、端口21,点击快速连接。左侧是本地目录,右侧是服务器目录,选中文件右键上传即可。FileZilla支持断点续传、多线程、站点管理和传输队列,批量传几百个文件也很稳定。如果连接时卡在列目录阶段,多半是被动模式端口没放行,可以在站点管理器中把传输模式改成主动模式试一下,以此判断问题出在哪一侧。

常见报错排查要点

连接阶段报530 Login incorrect,先检查用户名密码是否输错,再看/etc/vsftpd/ftpusers文件里是否包含当前用户,该文件中列出的用户一律禁止登录。报500 OOPS多半是上面提到的chroot写权限问题或目录权限给得过大。能登录但看不到文件列表、或传输卡住不动,基本是被动模式和防火墙的问题,按照前面说的固定pasv端口范围并放行,一般都能解决。

还有一个细节容易被忽略:SELinux。CentOS系统默认开启SELinux时,会拦截FTP对家目录的访问,执行setsebool -P ftpd_full_access on可以放行FTP的完整读写权限,不想改策略的话也可以临时用setenforce 0验证问题是否出在SELinux上。所有环节都配置妥当后,建议先用一个小文件走通全流程,再进行大批量传输,这样出问题时定位范围会小很多。

FTP上传文件Linux云服务器Windows系统修改时间:2026-09-04 12:38:34

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260904/50237.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。