Windows 10专业版、企业版和教育版都内置了Internet Information Services(IIS),其中就包括FTP服务器角色。启用FTP服务后,不需要额外安装第三方软件,就能让局域网内的其他设备通过FTP协议上传下载文件。但配置过程涉及组件安装、站点绑定、防火墙放行、用户权限和NTFS目录权限多个环节,任何一步遗漏都可能导致连接失败。对于初学者来说,最好的方式是把整条链路拆开,先跑通匿名只读访问,再逐步加入身份验证和写入权限。

一、确认系统版本并安装FTP服务组件
首先要确认你的Windows 10不是家庭版,因为家庭版没有完整的IIS管理器和FTP服务功能。可以在“设置”的“系统”信息里查看版本,或按Win+R输入winver查看。如果是专业版、企业版或教育版,可以继续操作。安装组件有两种方式:图形界面和命令行。
图形界面路径为:打开控制面板,进入“程序和功能”,点击左侧“启用或关闭Windows功能”,在弹出的窗口中找到“Internet Information Services”,展开后勾选“FTP服务器”下面的“FTP服务”和“FTP扩展性”,同时确保“Web管理工具”里的“IIS管理控制台”被勾选。点击确定后等待系统完成更改,部分环境可能需要重启。
命令行方式更易于脚本化,适合多台机器部署。以管理员身份打开PowerShell,执行以下命令。这些命令会通过DISM启用IIS的FTP服务器以及必要的管理工具。
dism /online /enable-feature /featurename:IIS-FTPServer /all dism /online /enable-feature /featurename:IIS-FTPExtensibility /all dism /online /enable-feature /featurename:IIS-WebServerRole /all dism /online /enable-feature /featurename:IIS-WebServerManagementTools /all
安装完成后,可以在服务列表中找到“Microsoft FTP Service”服务,并确认其启动类型为自动。此时IIS的FTP功能已经可用,但还需创建具体的FTP站点。
二、创建FTP站点并绑定路径
FTP站点的物理路径建议使用默认目录C:\inetpub\ftproot,也可以手动新建一个目录,例如C:\FTPData。以管理员身份打开IIS管理器,可以在开始菜单搜索“Internet Information Services (IIS)管理器”并运行。在左侧连接栏中右键“网站”,选择“添加FTP站点”。
在向导中输入FTP站点名称,例如MyFTPSite;物理路径选择C:\inetpub\ftproot。点击下一步后在“绑定和SSL设置”页中,IP地址可以选择“全部未分配”,端口保持21,勾选“自动启动FTP站点”,SSL选择“无SSL”。如果需要在公网环境传输,可后续配置FTPS,但局域网学习阶段建议先使用明文FTP,降低排查难度。
继续进入“身份验证和授权信息”页,勾选“基本”身份验证,授权选择“所有用户”,权限先勾选“读取”,以便先完成基础测试。点击完成后,FTP站点会出现在IIS管理器的“网站”节点下。如果需要命令行创建,可以使用appcmd工具,它的路径位于C:\Windows\System32\inetsrv\appcmd.exe,示例命令如下:
%windir%\system32\inetsrv\appcmd.exe add site /name:"MyFTPSite" /bindings:"ftp/*:21:" /physicalPath:"C:\inetpub\ftproot"
创建完成后,FTP服务会监听TCP 21端口。如果本机启用了其他FTP软件,需要先停止它们,避免端口冲突。接下来必须处理Windows防火墙,否则外部设备无法连接。
三、配置防火墙与用户目录权限
Windows Defender防火墙默认会阻止外部对TCP 21端口的访问。即使本机127.0.0.1测试成功,局域网其他设备也可能无法建立控制连接。可以通过图形界面添加入站规则,也可以使用netsh命令快速放行。以管理员身份运行命令提示符,执行以下命令:
netsh advfirewall firewall add rule name="FTP Server Port 21" dir=in action=allow protocol=TCP localport=21
除了21端口,FTP被动模式还需要放行一段被动端口范围,否则数据传输阶段会出现425错误。可以在IIS管理器中点击FTP站点,打开“FTP防火墙支持”,设置数据通道端口范围,例如5000-6000,然后在防火墙中放行该范围。命令如下:
netsh advfirewall firewall add rule name="FTP Passive Ports" dir=in action=allow protocol=TCP localport=5000-6000
接下来是用户权限。FTP基本身份验证依赖Windows本地账户或域账户。推荐创建一个专用本地用户,例如ftpuser,避免直接使用管理员账户。右键“此电脑”选择“管理”,进入“本地用户和组”,创建用户并设置密码,取消“用户下次登录时须更改密码”选项。然后在IIS的FTP站点中打开“FTP授权规则”,添加允许规则,指定该用户具有读取或写入权限。
只有FTP授权规则还不够,NTFS目录权限也必须匹配。如果物理路径是C:\inetpub\ftproot,需要给ftpuser分配对应的NTFS权限。例如使用icacls命令授予该用户完全控制权限:
icacls C:\inetpub\ftproot /grant "ftpuser:(OI)(CI)M"
如果只希望用户上传但不可删除,可以只给读取和写入,不给修改或完全控制。通过icacls的权限参数可以细化到M、RX、W等。这里推荐配合“FTP用户隔离”功能,让每个用户只能看到自己的目录,避免不同用户之间的文件混淆。
四、测试连接与常见故障排查
在Windows 10本机可以使用命令行ftp客户端测试。按Win+R输入cmd打开命令提示符,输入ftp 127.0.0.1,按提示输入用户名和密码。登录后执行ls命令查看目录列表,执行put test.txt上传文件。需要注意的是,ftp命令行客户端默认使用主动模式,如果局域网中存在NAT或防火墙,建议使用FileZilla客户端切换被动模式测试。
C:\>ftp 127.0.0.1 Connected to 127.0.0.1. 220 Microsoft FTP Service User (127.0.0.1:(none)): ftpuser 331 Password required for ftpuser. Password: 230 User logged in. ftp> ls 200 PORT command successful. 150 Opening ASCII mode data connection. 226 Transfer complete. ftp> quit
如果出现530错误,通常是用户名或密码错误,或者FTP授权规则未包含该用户。若密码正确还是报530,可以检查IIS的“FTP身份验证”是否启用了基本身份验证,以及Windows账户是否被禁用或密码过期。如果出现425错误,重点检查被动端口范围在防火墙中的放行情况,以及FTP防火墙支持里是否填写了外部IP地址。
对于常用的主动模式FTP客户端,还需要在防火墙中允许“FTP服务器”程序访问网络,而不仅仅是端口。可以在“允许应用通过防火墙”列表中勾选“FTP服务器”相关条目。排查时建议在服务器本机先用ftp 127.0.0.1确认服务正常,再换局域网其他设备测试连接。
五、学习方法与高效练习路径
学习FTP服务器配置不必一次吃透所有高级功能,建议先完成最小化部署,再逐步扩展。第一步只做匿名只读访问,确认端口监听和防火墙放行;第二步加入本地用户验证,观察530与NTFS权限的关系;第三步配置被动端口范围和用户隔离,理解FTP数据传输的工作方式;第四步尝试使用PowerShell脚本批量创建用户和站点,形成可重复的配置流程。
练习时可以把每一步产生的配置变化记录下来,尤其是IIS的配置文件applicationHost.config,它位于C:\Windows\System32\inetsrv\Config\applicationHost.config。使用appcmd或PowerShell查看FTP站点配置,比死记图形界面更有助于理解。例如用appcmd list site可以查看所有站点,用appcmd list config可以查看配置节。进一步还可以学习FTPS和SFTP的差异,明确FTP、FTPS、SFTP三者不同的应用场景。
高效练习需要结合真实报错。不要只按照教程点击,可以故意制造一些错误:删掉防火墙规则再连接、修改NTFS权限去掉写入再上传、停用FTP服务再查看客户端表现。通过这些反向测试,会更快理解每个环节的作用。最终目标不是记住点击顺序,而是当别人遇到530、425、200 PORT command successful等提示时,能迅速定位到身份验证、数据通道或权限问题。
win10 FTP服务器配置win10搭建FTP服务器FTP服务器搭建修改时间:2026-10-07 06:47:56