想要在个人电脑或者服务器搭建FTP服务,用来传输文件、备份数据,或是给团队共享资料,第一步挑选服务端软件。这类工具和路由器类似,基础功能差距不大,但使用体验差别明显。
市面上主流FTP服务软件就几款。Serv-U是老牌商业程序,功能完善,支持FTP、SFTP、HTTP多协议,自带Web管理页面,权限管控精细,可以按用户组设置磁盘配额和带宽限制。缺点是需要付费,14天试用结束后购买授权,更适合企业场景。FileZilla Server开源免费,安装包体积仅数MB,资源占用低,图形界面配置简单,个人、小型团队使用足够。Windows Server自带IIS FTP,不用额外安装程序,可以和系统账户打通,适合已经部署IIS的服务器,配置界面操作逻辑相对繁琐。Linux平台优先选用vsftpd,各大发行版软件源都包含,稳定轻量化,仅依靠单个文本配置文件,修改起来直观。

以Windows平台FileZilla Server为例,配置流程大致如下。官网下载安装包,安装勾选Server和Administration Interface,安装完成自动弹出管理界面,首次登录设置管理员密码。左侧管理用户和用户组,右侧是服务器全局参数。点击用户选项,新建账号,填写用户名,勾选密码选项设置登录密码。在Shared folders添加本地目录,例如D:FTP_Share,按需开启文件、目录权限,包含读取、写入、删除、新建子目录等。服务器默认监听21端口,想要规避端口扫描,可以修改为2121。被动模式建议开启,设置端口范围50000到50010,同时在Windows防火墙入站规则放行该端口段,否则客户端登录成功,但无法列出文件列表。
Linux部署vsftpd,安装完成先备份配置文件,cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak。编辑主配置,将anonymous_enable=YES修改为NO,关闭匿名访问,保持默认开启会允许任何人连接。local_enable=YES和write_enable=YES维持开启,本地用户才能够登录和写入文件。chroot_local_user=YES锁定用户访问范围至家目录,推荐启用。CentOS7及以上版本,额外添加allow_writeable_chroot=YES,chroot目录可写状态下不加这条配置,服务无法启动。被动模式开启pasv_enable=YES,定义端口区间。服务器部署在NAT环境,pasv_address填写公网IP,不填写客户端拿到内网地址,连接失败。
用户创建方面,Linux环境不要使用root账号运行FTP。新建专用账号,useradd -s /sbin/nologin ftpuser,-s /sbin/nologin代表该账号仅允许FTP登录,无法登录系统shell。执行passwd ftpuser设置密码,创建数据目录,chown ftpuser:ftpuser /home/ftpuser/ftp,目录权限设置755。Windows系统在计算机管理新建本地账户,密码需要包含大小写字母、数字组合,不然会触发系统密码策略拦截。
配置完成后,使用FileZilla客户端连接测试。填写服务器IP、新建的账号密码,点击快速连接。能够成功登录并查看共享目录文件,代表部署完成。连接失败按顺序排查:服务进程是否正常运行,防火墙21端口和被动端口段是否放行,被动模式公网IP填写是否正确。客户端登录成功却看不到文件列表,基本是被动端口未放行。上传文件报553错误,先检查磁盘空间,再核对FTP目录写入权限。