FTP服务器听着像是老旧技术,但实际场景里使用机会不少。企业内部传输大文件、给客户开放临时下载通道、老旧设备仅支持FTP协议,这类场景下FTP依旧很方便。搭建流程不算复杂,选好工具,调整权限与端口,半小时左右就能部署完成。
先确定部署环境。仅用于Windows局域网文件传输,系统自带的IIS FTP就够用,无需额外安装软件。跨平台使用、用户数量多、需要精细化权限管控,FileZilla Server更合适,免费并且提供图形管理界面。Linux服务器一般选用vsftpd,轻量稳定,修改配置文件即可完成基础配置。

以FileZilla Server举例。官网下载Windows版本,安装时勾选作为服务安装,开机自动启动,不用每次手动打开。安装完成打开管理界面,默认连接本地127.0.0.1,端口14147,首次登录需要设置管理员密码。连接成功之后不要立刻新建用户,进入Settings配置被动模式。找到Passive mode settings,填写服务器公网IP或者域名,再设定端口区间,例如50000到51000。这一步不能省略,不配置被动模式,内网可以正常连接,外网无法访问。
之后创建用户。菜单点击Users,右侧Add,填写用户名和密码。进入Shared folders分配目录,点击Add选择本地文件夹,按需勾选权限,包括读取、写入、删除、追加。想要限制用户只能访问自身目录,在用户设置中配置根目录映射,禁止向上跳转。匿名访问默认关闭,不要随意开启,开启之后文件夹会对外公开,任何人都能访问。
防火墙和路由器也要放行端口。Windows防火墙新建入站规则,开放21端口以及刚才配置的被动端口段。服务器部署在路由器后方,需要把21端口和被动端口段做端口映射。部分路由器自带FTP的ALG功能,建议关闭,该功能经常引发连接异常。
测试优先在内网其他电脑操作,浏览器输入ftp://192.168.1.x,输入账号密码,能够列出目录代表基础部署成功。外网测试使用手机4G网络,访问ftp://公网IP,连接失败基本是被动模式配置错误或者端口映射没有做好。
IIS搭建方式,打开控制面板程序和功能,启用Windows功能,勾选IIS管理控制台和FTP服务器。安装完成打开IIS管理器,右键站点添加FTP站点,绑定IP与21端口,选择本地物理路径,认证方式选择基本认证,授权指定用户。IIS权限分为两层,FTP授权规则和NTFS文件夹权限,两层都开启写入权限,用户才能上传文件。很多人踩这个坑,只调整IIS配置,没有修改文件夹安全属性,结果可以连接但是无法上传。
Linux环境vsftpd配置更加直接。安装完成后编辑/etc/vsftpd.conf,local_enable设置为YES,write_enable设置为YES,chroot_local_user设置为YES,锁定用户在自家目录。被动模式增加配置:pasv_enable=YES,pasv_min_port=30000,pasv_max_port=31000,pasv_address填写服务器公网IP。保存文件重启服务。使用useradd新增用户,指定家目录,shell设置为/sbin/nologin,用户只能FTP登录,无法SSH登录,密码通过passwd命令设置。防火墙放行21端口和被动端口段,逻辑和Windows环境一致。
FTP协议本身不加密,账号密码和传输数据全部明文传输。如果传输文件存在敏感信息,不要直接使用裸FTP。FileZilla Server支持FTPS,在设置上传入SSL证书即可开启。vsftpd同样提供ssl_enable选项。更简便的方案是直接使用SFTP,依托SSH通道,占用22端口,不需要额外部署服务端,客户端选用WinSCP或者FileZilla的SFTP模式。
遇到连接失败、权限报错,按顺序排查:服务进程是否正常运行,防火墙端口是否放行,被动端口段是否完成映射,用户目录是否具备写入权限,根目录映射配置是否正确。外网访问还需要确认IP是否为公网地址,很多宽带分配内网IP,这种情况需要申请公网IP,或者借助内网穿透工具。