一、安装 IIS 和 FTP 服务
1. 启用 IIS 和 FTP 服务
# Windows 10/11 或 Windows Server
# 通过控制面板或 PowerShell 安装
# PowerShell 命令(管理员权限):
Enable-WindowsOptionalFeature -Online -FeatureName IIS-FTPServer
Enable-WindowsOptionalFeature -Online -FeatureName IIS-FTPServer-FTPS
2. 图形界面安装
打开"控制面板" → "程序" → "启用或关闭 Windows 功能"
勾选:
- Internet Information Services
- FTP 服务器(包含 FTP 服务和 FTP 扩展性)
- Web 管理工具(可选)
二、配置 FTP 站点
1. 创建站点目录
# 创建 FTP 根目录
mkdir C:\FTPRoot
# 创建测试文件
echo Hello FTP > C:\FTPRoot\test.txt
2. 配置 FTP 站点
打开
IIS 管理器
右键"网站" → "添加 FTP 站点"
设置:
- 站点名称:
MyLocalFTP
- 物理路径:
C:\FTPRoot
- IP 地址:选择本机 IP 或"全部未分配"
- 端口:21(默认)
- SSL:根据需要选择
- 身份验证:基本(用于本地测试)
- 授权:指定用户或所有用户
三、配置权限设置
1. 文件夹权限
# 为 FTP 目录设置权限
icacls C:\FTPRoot /grant "Users:(OI)(CI)RW"
2. 用户管理
# 创建 FTP 专用用户(可选)
net user FTPUser P@ssw0rd /add
# 授予目录权限
icacls C:\FTPRoot /grant FTPUser:(OI)(CI)RW
四、防火墙配置
1. 开放 FTP 端口
# 允许 FTP 通过防火墙
netsh advfirewall firewall add rule name="FTP Server" dir=in action=allow protocol=TCP localport=21
# 如果使用被动模式,还需要开放端口范围
netsh advfirewall firewall add rule name="FTP Passive Ports" dir=in action=allow protocol=TCP localport=50000-50100
2. IIS 管理器配置被动端口
在 IIS 管理器中选择服务器节点
双击"FTP 防火墙支持"
设置外部 IP 地址和数据通道端口范围
五、高级配置选项
1. 虚拟目录配置
右键 FTP 站点 → "添加虚拟目录"
指定别名和物理路径
2. 限制设置
<!-- 编辑 applicationHost.config -->
<location path="MyLocalFTP">
<system.ftpServer>
<security>
<requestFiltering>
<fileExtensions allowUnlisted="false">
<!-- 只允许特定文件 -->
<add fileExtension=".txt" allowed="true"/>
</fileExtensions>
</requestFiltering>
</security>
</system.ftpServer>
</location>
六、测试连接
1. 使用命令行测试
ftp localhost
# 输入用户名密码
# 使用命令:dir, put, get, bye
2. 使用 FTP 客户端
- 地址:
ftp://localhost 或 ftp://你的IP地址
- 端口:21
- 使用 Windows 身份验证或指定用户名
七、常见问题解决
1. 连接问题
# 检查服务状态
sc query FTPSVC
# 重启服务
net stop FTPSVC && net start FTPSVC
2. 权限问题
- 确保用户有读取/写入权限
- 检查文件夹的 NTFS 权限
- 验证 IIS_IUSRS 权限
3. 被动模式问题
八、安全建议
使用强密码
限制用户权限
启用 SSL/TLS(如果需要安全传输)
使用 IP 限制
定期检查日志:
C:\inetpub\logs\FTP
简易脚本示例
# 快速安装配置脚本(管理员运行)
$FTPPath = "C:\FTPRoot"
# 创建目录
New-Item -ItemType Directory -Path $FTPPath -Force
# 安装服务
Install-WindowsFeature -Name Web-FTP-Server, Web-FTP-Service
# 创建站点
Import-Module WebAdministration
New-WebFtpSite -Name "QuickFTP" -PhysicalPath $FTPPath -Port 21
# 设置权限
icacls $FTPPath /grant "IIS_IUSRS:(OI)(CI)R"
这样配置后,本地 FTP 服务器就可以正常运行了。根据实际需求调整安全设置和权限配置。