
简介以Win7系统为平台详细讲解两台PC间搭建FTP通讯的实操教程面向网络管理员、自动化工程师及IT运维人员。内容按完整流程组织涵盖创建FTP用户、启用Windows FTP服务、配置IIS管理器、添加FTP站点及设置访问权限并演示TwinCAT FTP客户端上传与下载文件的具体操作。文档中还包含TwinCAT FTP Client的功能块声明与程序示例便于读者直接参考并集成到自动化控制系统中。对于配置过程中的常见易错点如必须勾选Web管理工具、大文件传输可能掉线等均给出了醒目提示可有效减少重复尝试。资源包为1个docx文档大小约439KB图文步骤与代码示例紧密结合。已有192人学习本资源适合需要快速掌握FTP通讯配置并结合TwinCAT实现自动化数据传输的技术人员。1. 两台PC之间传文件为什么绕不开FTP两台电脑之间传大文件这件事看着简单真做起来往往在U盘、微信、网盘之间来回折腾。U盘拷几个GB的视频要盯着进度条不敢动微信传文件会压缩画质网盘绕一圈云端速度还得看运营商脸色。如果两台机器就在同一个局域网里FTP几乎是绕不开的标准答案——一台开FTP服务另一台用FTP客户端连过去文件直接在本地网络里直传不走云端、不压内容。这篇文章把从零搭建、参数设置到排错避坑的完整路径拆开讲适合经常在两台PC间搬数据的运维、开发也适合家里有多台电脑想省事的人照着复现。2. 先摸清FTP的工作方式主动模式与被动模式选型才有依据2.1 FTP和Windows共享文件夹的差别什么时候该用FTP很多人第一反应是两台Windows PC直接开共享文件夹不就行了确实可以右键属性共享另一台机器输个\\192.168.x.x就能访问。但这个方案有几个隐性问题SMB协议在跨网段、跨系统时配置繁琐Windows家庭版没有本地策略编辑器权限设置不够细而且SMB服务一旦开放对公网暴露时攻击面比较大。FTP的优势在于协议简单、跨平台成熟、权限模型清晰几乎所有操作系统都自带客户端和服务端Python都能用几行脚本实现一个简单的FTP服务。我一般会这样判断两台PC都是Windows且在同一网段、只是临时拷几个文件用共享文件夹最快但如果你要长期维护一个文件交换通道、要给不同人分配不同的读写目录、或者客户端里有Linux或macOS机器那就踏实走FTP。FTP服务器搭建的教程这么多不是因为大家闲而是这个场景确实刚需。2.2 主动模式PORT与被动模式PASV谁在连接谁FTP和HTTP最大的区别在于它用了两条TCP连接一条是控制连接固定走21端口用来传用户名、密码和命令另一条是数据连接真正传文件内容。数据连接的建立方式有两种这是配置时最容易懵的地方。主动模式PORT下客户端先和服务器21端口建立控制连接然后客户端把自己的一个端口告诉服务器服务器主动从这个端口连过来。问题在于客户机通常在NAT后面或者有防火墙服务器主动连不进来。被动模式PASV反过来服务器把数据端口开好把端口号告诉客户端由客户端去连接。过去大家都说被动模式更容易穿透但到了实际局域网环境里被动模式反而经常被Windows防火墙拦因为服务器端需要开放一段高位随机端口。在纯局域网两台PC之间两种模式理论都能跑通但我的习惯是统一走被动模式然后把服务器端防火墙的入站规则指定死一段端口比如50000-50100。这样做的原因很简单主动模式依赖客户端开端口而Windows客户端的网络环境你不可控被动模式只要服务器端配置到位客户端就不用做任何额外放行。2.3 端口规划21控制端口与数据端口的配合关系端口规划是FTP联调里最容易被忽略的一环。很多人服务器装好了客户端输入账号密码控制连接建立成功230 Login successful都出来了然后卡在LIST命令上目录列表刷不出来问题就出在数据端口。控制连接固定走21这条端口只需要在入站规则里放行一次但被动模式的数据端口是动态的范围由服务器配置决定。以FileZilla Server为例默认设置是让服务器从系统临时端口里挑这个范围非常宽防火墙如果要精准放行就得开一大片。更稳的做法是在服务器设置里把被动端口范围固定成一段窄区间比如50000-50100然后在防火墙里对这三个要素分别配置21端口的入站TCP、被动端口范围的入站TCP、以及程序本身的放行。如果你的服务器上还跑了IIS自带的FTP、或者其他占用21端口的服务先确认端口没被占。用netstat -ano | findstr :21看一眼如果有进程监听确认是哪个服务占用的两套FTP服务共存的情况下要把其中一个改到别的端口比如2121这样排查起来才不会两头打架。3. 搭建FTP服务器Windows自带IIS与FileZilla Server两条路3.1 用Windows自带IIS搭FTP图形界面操作步骤Windows 10/11专业版和Windows Server都自带IIS组件不需要装第三方软件就能开FTP这是最快的一条路。打开控制面板进入“启用或关闭Windows功能”勾选“Internet Information Services”下的“FTP服务器”包括FTP服务和FTP可管理性确定后系统会自动装上。装好之后按Win键输入inetmgr打开IIS管理器在左侧树里找到你的机器名双击“FTP防火墙支持”先把数据通道端口范围设置成50000-50100。然后在“连接”里右键“网站”选择“添加FTP站点”名称随意物理路径选你要共享的文件夹。绑定IP地址留空就表示监听本机所有网卡端口默认21“启动FTP站点”打勾SSL证书这一步先选“无SSL”后面要加密再补。绑定完后需要在FTP授权规则里配置权限。默认情况下IIS FTP会把Windows NTFS权限和FTP授权规则叠加判断缺一不可。如果只给某个Windows用户开放上传权限先在左侧选中你的FTP站点双击“FTP授权规则”添加一条“允许规则”指定“指定角色或用户组”输入Windows用户名权限勾选“读取”和“写入”。光有这个还不够共享文件夹的NTFS安全选项卡里也要给这个用户“修改”权限否则上传一写文件就报错。3.2 用FileZilla Server搭FTP用户、共享目录、写权限三件事如果不想碰IIS那一套Windows特有的权限叠加逻辑FileZilla Server是更常见的做法跨平台、配置集中权限模型也简单直观。安装时选“作为服务安装”开机会自动启动不用每次手动开。安装完后打开管理界面第一次会要求连本地的管理端口密码可以设一个简单的。进入主界面后先做三件事设置被动端口范围、添加用户、绑定共享目录。在“编辑-设置-被动模式设置”里勾选“自定义端口范围”填50000-50100“编辑-用户”里添加一个账号密码选“要求密码”然后在“共享文件夹”里添加你要开放的目录。选中目录后右侧的“文件权限”勾选“读”“写”“删除”“追加”“目录权限”勾选“列表”“创建”“删除”这套组合就是最常见的读写账号配置。FileZilla Server的用户权限是排他式的没有Windows NTFS那一层叠加FTP里能写就是能写逻辑清楚。它的管理界面里还能直接看到实时连接日志哪条命令报了什么错一行一行对下来排错比IIS直观得多。如果你只是在家里两台PC之间传东西我建议第一选择就是它。3.3 固定服务器端IP不漂移是能稳定连接的前提FTP地址写在客户端里一写就是长期用的。如果服务器端PC开的是DHCP自动获取IP路由器重启一次IP就可能变了客户端那边的配置文件、快捷方式、脚本全都要跟着改。所以搭建服务器的第一步反而是先把这台机器的IP固定下来。常见做法是登录路由器后台在DHCP静态分配里绑定MAC地址把服务器PC的IP锁死。也可以用Windows的网络高级设置把IPv4改成手动填一个和路由器同网段的静态IP比如192.168.1.100子网掩码255.255.255.0网关填路由器的IPDNS填网关即可。我习惯两种都做一遍路由器绑定MAC保证万一路由器重置了分配逻辑不变PC端手动指定IP保证本机断网重连后不会换地址。需要注意如果服务器PC同时连着有线和无线两张网卡都拿到IP的话客户端连哪个地址取决于你的路由表。这种双网卡场景下最好把不需要的那块网卡禁用或者只保留有线连接里的FTP监听避免出现“ping通但21端口连不上”的怪问题。4. 从另一台PC连过来cmd命令行与图形客户端的完整路径4.1 cmd下ftp的命令最小可用流程与常用子命令Windows自带命令行ftp工具没有图形界面也能完成上传下载这是排查问题时的保底手段也是脚本化操作的基础。打开cmd执行ftp 192.168.1.100这里192.168.1.100是服务器端PC的IP。连接后系统会提示输入用户名和密码匿名登录的话用户名填anonymous密码任意邮箱格式。登录成功出现ftp提示符后先看目录ftp dir这个命令列出当前目录下的文件和子目录。切目录用cd和DOS命令一致。下载文件用get上传用putftp get 项目文档.zip ftp put 备份文件.tar.gz下载时如果文件比较大建议先敲binary切到二进制传输模式否则文本模式下传输遇到特殊字符会被自动转换压缩包传过去就解压失败了。命令执行完退出用bye。这段流程里最容易翻车的是dir之后没反应一直卡住。问题基本都在数据连接上要紧的不是反复敲命令而是去服务器端看防火墙和PASV端口配置cmd里的ftp默认是被动模式数据端口连不上才会卡死在那里。传完几个文件后用hash命令开启进度显示传输状态一目了然至少能确认它在动而不是死等。4.2 用FileZilla Client连接图形界面下的关键设置命令行适合快速验证和脚本化日常使用还是图形客户端直观。FileZilla Client和WinSCP是两个最常用的FTP客户端工具前者界面直白后者偏重文件同步。连接时填好主机IP、用户名、密码端口21点快速连接就能进去。连接前有几项设置值得提前看。在“编辑-设置-连接-主动/被动模式”里切到被动模式传输方式选“二进制”。中文文件名在部分服务器端会出现乱码这时候把“字符集”改成“强制UTF-8”或者反过来改成“自动检测”多切换几次一般能解决。FileZilla Client下方有三个状态窗格日志、队列、传输卡住的时候先看日志最后一行能直接看到服务器返回什么错误码。WinSCP和FileZilla Client类似但它的优势是支持同步镜像和命令行脚本调用适合做定时同步。如果两台PC直接是Windows对Windows也可以用WinSCP的“TCP/IP后台连接”配合计划任务跑同步脚本后面第6章会展开。4.3 连接前先验证网络ping和端口检查怎么做客户端报“连接超时”的时候别急着检查FTP配置先确认两台机器的网络链路通不通。顺序一般是这样ping 192.168.1.100 -t通了说明ICMP可达继续看端口telnet 192.168.1.100 21telnet连上21端口后FTP服务器会返回一段以220开头的欢迎信息看到220就说明服务在正常监听。如果telnet命令提示找不到说明Windows功能里没启用Telnet客户端可以用PowerShell的Test-NetConnection代替Test-NetConnection 192.168.1.100 -Port 21返回TcpTestSucceeded : True就说明21端口可达。这三步走完问题范围基本就锁死在FTP服务本身的配置上了如果ping通但21端口不通直奔服务器防火墙和FTP服务状态别再绕。5. FTP联调避坑5个常见问题的现象、原因与解决5.1 能ping通但连不上21端口Windows防火墙入站规则现象客户端ping服务器端IP通但FTP客户端提示“连接被拒绝”或“连接超时”。原因Windows防火墙默认拦截21端口入站。装了IIS FTP或FileZilla Server后安装包一般会顺手添加入站规则但如果是绿色版、手动安装的服务或者系统镜像做过精简规则可能没注册成功。解决在服务器端打开“Windows Defender防火墙-高级设置-入站规则”新建规则端口TCP 21允许连接三个网络配置文件全勾上。如果是IIS FTP还需要同时放行被动端口范围50000-50100的入站TCP。规则建完后用Test-NetConnection重新测一次TcpTestSucceeded变成True就算过了。注意别把FTP软件自身的程序入站规则和端口规则混在一起两个都建排错时互不干扰。5.2 登录成功但目录列表刷不出来PASV模式与数据端口被拦现象输入账号密码后提示230 Login successful紧接着执行LIST或dir就卡住直到超时断开。原因控制连接走21端口没问题但数据连接用的是被动模式随机端口这些端口没在防火墙放行范围里客户端发PASV命令后服务器返回了一个端口客户端连接这个端口被防火墙拦掉目录列表就永远等不到。解决这是最典型的数据端口联通问题。按第3章的配置把服务器被动端口固定成50000-50100然后防火墙入站规则里放行这段端口。改完配置后重启FTP服务再在客户端重新连接。FileZilla Server可以在“编辑-设置-被动模式设置”里直接看到当前生效的端口范围确认不是默认的随机分配。IIS FTP的被动端口在“FTP防火墙支持”里设置范围填完别忘记点“应用”。5.3 上传报错550或553写权限与IIS授权规则现象下载正常上传文件时服务器返回550 Permission denied或553 Could not create file。FTP常见的权限问题就在这里。原因FTP服务有两个权限层。FileZilla Server这类独立服务只看自身用户配置上传目录没勾“写”就会报这个错IIS FTP还叠加NTFS权限FTP授权规则里勾了写入但Windows文件夹安全选项卡里的用户没有“修改”权限一样报错。常见误用是把权限全部集中在FTP配置里忽视了NTFS那一层。解决FileZilla Server打开“编辑-用户-共享文件夹”确认目标目录的“文件权限”里勾了“写”“目录权限”里勾了“创建”这两个是上传的基础。IIS FTP则要两处都改FTP授权规则加写入权限文件夹的“属性-安全”给该Windows用户“修改”权限。改完权限后新开一个FTP会话测试不要用旧会话权限变更有时候不会即时生效。5.4 中文文件名乱码传输编码不一致引发现象用FTP客户端看到的文件名是乱码ä¸Â文这类字符一串上传和下载都能完成但文件名不可读。原因FTP协议本身不强制编码Windows默认用GBKLinux默认UTF-8客户端和服务端编码不一致就会乱码。IIS FTP老版本对UTF-8支持不完整FileZilla Server默认是UTF-8规范。解决在客户端这边调整字符集。FileZilla Client的“设置-显示-字符集”里选择“强制UTF-8”如果服务器是Windows老IIS反过来选“自动检测”或“使用本地编码”。FileZilla Server在“设置-杂项-调试”里有一个“发送原始FTP命令”的选项可以用OPTS UTF8 ON命令手动开启服务器端UTF-8支持。如果两边始终对不上一个更粗暴的办法是文件名全部用英文和数字避开编码差异虽然不是万能的但能解决大多数实际痛点。5.5 另一台PC是Linux/macOS跨系统FTP的路径差异现象Windows建好的FTP服务器在Linux上用命令行连上传文件时路径写法和Windows端不一样或者上传的脚本文件在Linux下打开发现换行符不对。原因FTP本身就是跨系统的但路径分隔符、权限模型、文本文件换行方式不同。Windows路径用反斜杠Linux用正斜杠Windows的FTP服务默认根目录概念和Linux不同Linux的ftp客户端里cd要写绝对或相对路径容易晕。解决在客户端侧统一用正斜杠做路径分隔避免直接把Windows路径复制到Linux终端里。传输代码文件、shell脚本时用binary模式传防止文本模式自动转换换行符把脚本搞坏。iOS和macOS自带的Finder也支持FTP连接菜单里按CmdK输入ftp://192.168.1.100即可连接不需要装额外软件。如果另一台是Linux服务器可以在服务器端装vsftpd文件配置在/etc/vsftpd.conf把chroot_local_userYES这一行打开用户就会被限制在自己的家目录里这也是一个和Windows侧对标的权限隔离点。6. 让FTP更可靠加密传输、断点续传与定时脚本6.1 开启FTP over TLS从明文到加密的一次切换默认FTP的账号密码和控制命令都是明文传输的普通家庭局域网里无所谓但如果两台PC之间有交换机、无线AP等中间设备或者你打算把21端口暴露到公网明文就是隐患。FileZilla Server支持TLS加密配置路径很短在“编辑-设置-SSL/TLS设置”里勾选“启用SSL/TLS”生成证书局域网内用自签名就够证书用系统默认的Common Name可以填服务器IP然后把客户端强制要求TLS的选项打开。客户端这边FileZilla Client连接时把加密方式从“如果可用则使用显式FTP over TLS”改成“要求显式FTP over TLS”连接后会有一个证书校验的确认弹窗局域网自签名证书直接信任即可。加密后的传输会损失一点速度但换来的是FTP密码和文件内容不在局域网里裸奔值得。6.2 断点续传与传输校验大文件中断后的后悔药大文件传一半断掉是FTP场景里最磨人的事。FileZilla Client和WinSCP都支持断点续传重新连接后如果检测到目标已有同名文件会弹窗让你选择“覆盖”“续传”“跳过”。选择续传后客户端会比较当前文件大小从断点处继续传剩余部分。但有一个前提传输必须是二进制模式文本模式下续传很容易拼接错误。文件传完后的校验依赖的是传输服务进程比如WinSCP的“校验”功能可以比较两端文件哈希值推荐的哈希算法是SHA-256局域网内两个GB级文件校验一次也就几秒钟。强迫症一点的用户可以养成传输完成顺手校验的习惯不要等到文件用不了再回头排查。6.3 用脚本定时上传从手动到无人值守定期备份和定时同步是FTP一个典型的延伸需求。FTP本身是交互式协议但命令行工具可以配合参数批量执行。Windows下最常见的做法是用WinSCP的命令行模式封装一条同步脚本然后挂到计划任务里。下面是一个最小脚本示例winscp.com /command ^ open ftp://用户名:密码192.168.1.100:21/ ^ synchronize local D:\backup\data /upload ^ exit逻辑说明open建立连接登录信息直接写在地址里synchronize local的作用是把本地D:\backup\data目录作为源头把差异文件推送到FTP服务器当前目录/upload参数表示方向是上传。^在cmd里作为换行转义符。参数说明用户名和密码写在命令行里是明文适合内网环境如果密码包含特殊字符比如或/需要URL编码后才能正确解析。synchronize的另一个方向是/download从服务器拉取到本地适合取文件而不是备份。路径里有空格时整个路径要加双引号这是脚本最常踩的坑。批处理脚本配合Windows计划任务在“任务计划程序”里创建一个基本任务触发器选“每天”操作指向这个bat文件就能实现定时备份。注意脚本里不要把winscp.com的路径省略用全路径C:\Program Files (x86)\WinSCP\winscp.com写进第一个命令行参数因为计划任务的运行环境里PATH可能不含这个目录。做完这一步“两台PC间的FTP通讯”才真正从临时手工操作变成了日常基础设施。我的习惯是搭好FTP后先从头到尾走一遍上传下载验证然后专门测一次断网重连和权限改动把这些坑主动踩一遍再交给别人用。FTP这个老协议看似过时但它在本地文件交换场景里的稳定性和可控性直到今天都很难被替代。希望帮到你。本文还有配套的精品资源点击获取