IIS 来实现。下面是一个从零开始的详细图文教程。
方案一:使用 IIS 管理器(图形化界面)
这是最常用和推荐的方法。
第一部分:安装 FTP 服务器角色
打开服务器管理器:
- 点击左下角的“开始”按钮,找到并打开“服务器管理器”。
添加角色和功能:
- 在“服务器管理器”仪表板中,点击“添加角色和功能”。
启动安装向导:
- “开始之前”页面,直接点击“下一步”。
- “安装类型”页面,选择“基于角色或基于功能的安装”,点击“下一步”。
- “服务器选择”页面,确保选中了当前服务器,点击“下一步”。
选择服务器角色:
- 在角色列表中,找到并展开“Web 服务器(IIS)”。
- 在展开的列表中,再次找到并展开“FTP 服务器”。
- 关键步骤:勾选“FTP 服务”。这会自动勾选其下的“FTP 扩展性”(基础功能已足够,扩展性提供更多功能如 SSL 等)。
- 点击弹出的“添加功能”按钮。
- 点击“下一步”。
完成安装:
- 在“功能”和“Web 服务器角色(IIS)”页面,均无需额外选择,直接点击“下一步”。
- 最后在“确认”页面,确认要安装“FTP 服务”和“Web 服务器(IIS)管理控制台”,点击“安装”。
- 等待安装完成,然后点击“关闭”。
第二部分:创建 FTP 站点
打开 IIS 管理器:
- 在“开始”菜单或“服务器管理器”的“工具”菜单中,打开“Internet Information Services (IIS) 管理器”。
创建 FTP 站点:
- 在左侧连接面板,展开服务器节点。
- 右键点击“站点”,选择“添加 FTP 站点...”。
站点信息:
- FTP 站点名称:输入一个易于识别的名称,例如
MyCompanyFTP。
- 物理路径:指定一个本地或网络路径作为FTP的根目录。例如:
D:\FTPRoot。请确保该文件夹已存在,或先创建它。
- 点击“下一步”。
绑定和 SSL 设置:
- 绑定:
- IP 地址:可以选择“全部未分配”(使用所有服务器IP),或从下拉列表中选择一个特定的IP。
- 端口:默认为
21。若无冲突,保持默认。
- 虚拟主机名:一般留空。
- 自动启动 FTP 站点:保持勾选。
- SSL:
- 无 SSL:最简易,但数据传输不安全(适用于纯内网测试)。
- 允许 SSL:兼容性和安全性兼顾(推荐)。
- 需要 SSL:安全性最高,要求客户端必须使用 SSL 连接。
- 如果没有 SSL 证书,可以先选择“无 SSL”或“允许 SSL”。如需证书,请提前导入到服务器的“个人”证书存储中,然后在此处选择。
- 点击“下一步”。
身份验证和授权信息:
- 身份验证:
- 匿名:允许任何人无需用户名密码访问(慎用,极不安全)。
- 基本:要求输入 Windows 用户名和密码进行验证(密码明文传输,除非用 SSL)。
- 通常只勾选“基本”。
- 授权:
- 允许访问:选择“指定用户”或“所有用户”。为了安全,建议选择“指定用户”,并输入一个你希望授权的 Windows 本地用户或域用户(例如
FTPUser)。
- 权限:根据需要勾选“读取”(下载)和/或“写入”(上传)。
- 点击“完成”。
第三部分:配置 Windows 防火墙(允许外部访问)
如果服务器防火墙开启,需要放行 FTP 端口。
打开“
控制面板” -> “
Windows Defender 防火墙” -> “
高级设置”。
在“入站规则”中,点击“
新建规则...”。
规则类型:选择“
端口”,下一步。
协议和端口:选择“
TCP”,特定本地端口输入
21,下一步。
操作:选择“
允许连接”,下一步。
配置文件:根据需要勾选(域、专用、公用),通常全选,下一步。
名称:输入一个规则名,如“
FTP Server (Port 21)”,完成。
(可选但重要)被动模式端口范围:
FTP 被动模式会使用随机的高位端口。为了确保客户端能正常连接,你最好在防火墙中开放一个端口范围,例如 50000-51000,然后在 IIS 管理器中配置:
- 在 IIS 管理器左侧,点击你创建的 FTP 站点。
- 在中间功能视图,双击“FTP 防火墙支持”。
- 在“数据通道端口范围”中,输入
50000-51000。
- 在“外部 IPv4 地址”中,如果服务器有公网IP或特定 NAT 地址,需要填写,否则客户端可能无法返回数据。
- 同样,在防火墙中为
TCP 50000-51000 端口范围创建一条新的入站规则。
第四部分:测试连接
在同一局域网内的另一台电脑上,打开文件资源管理器。
在地址栏输入:
ftp://你的服务器IP地址 或
ftp://你的服务器域名。例如:
ftp://192.168.1.100
按回车,系统会提示你输入用户名和密码(如果设置了基本身份验证)。
输入之前授权的 Windows 用户名和密码,看是否能成功登录并浏览/上传/下载文件。
也可以使用专业的 FTP 客户端(如 FileZilla、WinSCP)进行测试,连接时协议选择“FTP”,加密模式根据你的 SSL 设置选择(如果没配 SSL 就选“普通 FTP”)。
方案二:使用 PowerShell(命令行)
适合批量部署或远程管理,更高效。
安装 FTP 角色:
Install-WindowsFeature -Name Web-Ftp-Server -IncludeManagementTools
创建 FTP 目录并设置权限(假设使用 FTPUser 账户):
New-Item -ItemType Directory -Path D:\FTPRoot
# 为FTPUser账户设置目录的完全控制权限(请根据实际需要调整权限)
icacls D:\FTPRoot /grant FTPUser:(OI)(CI)F
创建 FTP 站点:
Import-Module WebAdministration
New-WebFtpSite -Name "PowerShellFTP" -Port 21 -PhysicalPath "D:\FTPRoot" -Force
配置身份验证和授权(设置基本身份验证并禁止匿名):
Set-WebConfigurationProperty -Filter /system.ftpServer/security/authentication/anonymousAuthentication -PSPath IIS:\ -Location "PowerShellFTP" -Name enabled -Value $false
Set-WebConfigurationProperty -Filter /system.ftpServer/security/authentication/basicAuthentication -PSPath IIS:\ -Location "PowerShellFTP" -Name enabled -Value $true
Set-WebConfigurationProperty -Filter /system.ftpServer/security/authorization -PSPath IIS:\ -Location "PowerShellFTP" -Name @{accessType="Allow";roles="";permissions="Read,Write";users="FTPUser"}
启动 FTP 站点:
Start-WebItem -PSPath 'IIS:\Sites\PowerShellFTP'
配置防火墙(使用 PowerShell):
New-NetFirewallRule -DisplayName "FTP Server (Port 21)" -Direction Inbound -Protocol TCP -LocalPort 21 -Action Allow
常见问题和安全建议
连接问题:
- 无法连接:检查防火墙、IP地址、端口是否正确。
- 用户名/密码错误:确认 Windows 用户密码正确,且该用户在服务器上有登录权限(可通过“本地安全策略”调整)。
- 被动模式失败:确保在防火墙中开放了被动模式的端口范围,并在 IIS 中正确配置了“FTP 防火墙支持”的外部IP地址。
安全加固:
- 强烈建议使用 SSL/TLS(FTPS):申请或创建一个自签名证书,在绑定中设置为“需要 SSL”。这可以加密所有数据(包括密码)。
- 隔离用户:在 IIS 管理器中,可以配置“FTP 用户隔离”,将不同用户限制在自己的目录内,防止越权访问。
- 强密码策略:为 FTP 用户设置复杂的密码。
- 限制 IP 访问:在 FTP 授权规则中,可以添加允许或拒绝的 IP 地址范围。
- 定期审计日志:IIS 的 FTP 日志默认存储在
%SystemDrive%\inetpub\logs\LogFiles 下,定期检查可疑活动。
性能与高级配置:
- 可以在站点级别设置连接限制、超时、日志格式等。
- 考虑使用 Windows 自带的“Windows Server Backup”功能或第三方工具定期备份 FTP 目录和 IIS 配置。
按照以上步骤操作,你应该可以在 Windows Server 2016 上成功搭建并运行一个功能完整的 FTP 服务器。对于生产环境,请务必做好安全配置。