尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

两台PC间FTP通讯配置指南:从协议模式到防火墙避坑

发布时间:2026/9/29 1:09:11

资讯中心
01
ARTICLE

两台PC间FTP通讯配置指南:从协议模式到防火墙避坑

两台PC间FTP通讯配置指南:从协议模式到防火墙避坑
简介这是面向工业自动化及需要跨PC传输文件场景的技术文档系统讲解在两台PC间搭建FTP通讯的完整方法。文档以Win 7为环境从创建FTP用户、启用Windows FTP服务、配置IIS管理器与FTP站点到使用TwinCAT FTP客户端上传和下载文件每一步均配有清晰操作说明与参数示例并给出上传超大文件可能掉线、必须勾选Web管理工具等关键提醒。包体为单个docx文件共439KB内容紧凑、针对性强适合自动化工程师、技术支持人员及需要快速配置FTP服务的用户。文档还包含TwinCAT FTP功能块的变量声明与调用范例帮助读者在PLC程序中实现文件上传下载直接加速现场调试。目前已有192人学习对常见配置细节和排错提示的整理可有效缩短实施时间。1. 两台PC间FTP通讯为什么都2024年了还在用这个老办法两台电脑之间传个大文件很多人第一反应是U盘拷贝或者微信传文件。但真到实操场景——比如给客户机器送一个2GB的数据库备份、给实验室另一台电脑同步一批传感器日志、在公司内网把构建产物从开发机丢到测试机——U盘够不着微信压缩包又限大小网盘走外网一圈绕得人心烦。FTP这个老协议反而成了最不出错的方案装个服务端开个客户端两边都在一个局域网里20秒连上传输速度直接跑满网卡带宽。两台PC间实现FTP通讯的方法核心就三件事一台PC当FTP服务器一台PC当客户端去连中间的网络端口和权限别拦路。标题里的方法落在实操上无非就是选型、配置、连调、排错四步。这篇文章写给谁给那些不想为一次临时传输去学一堆新协议、也不想抱着移动硬盘两头跑的工程师。你能在这篇里拿到最小可用的配置步骤、参数取舍和常见的翻车点照着做两台电脑的FTP通道十分钟内跑通。2. FTP协议与连接模式先搞懂主动和被动不然你连端口都配不明白FTP能干活靠的是两个独立的连接控制连接和数据连接。控制连接走TCP 21端口负责发指令比如登录、列目录、切换路径数据连接才是真正传文件的那条通道端口不固定。问题恰恰出在数据连接上——它到底是客户端主动连进来还是服务器主动连出去分成了主动模式Active和被动模式Passive两种选错模式防火墙策略全白配。2.1 主动模式与被动模式的握手差异主动模式的过程是客户端先和服务器在21端口建立控制连接然后客户端把自己的IP和一个临时端口告诉服务器服务器用20端口主动去连客户端的这个临时端口。这个设计在公网场景下马上碰到一个问题——客户端在NAT后面的话服务器根本连不进客户端的内网IP。被动模式则是客户端把数据连接的主动权拿过来客户端先连服务器的21端口发PASV指令服务器回应一个IP和端口客户端再去连这个端口。这样一来服务器只需要开放21端口和一个被动端口范围客户端不需要开放任何入站端口NAT后面也能正常工作。我一般给两台PC做FTP通讯默认全用被动模式。原因很实在Win10、Win11自带的防火墙默认放行出站连接客户端侧几乎不用改策略而主动模式要求客户端开临时入站端口Windows防火墙弹窗就能烦死人。下面是两种模式的对比方便你对号入座对比项主动模式被动模式数据连接发起方服务器20端口客户端服务端需开放端口21、2021、被动端口范围如5010-5100客户端需开放端口随机高位入站端口无NAT/防火墙友好度差客户端在NAT后会失败好适用场景服务器和客户端都在同一局域网且无入站限制绝大多数场景推荐2.2 服务端软件选型Windows自带IIS、FileZilla Server还是别的选哪款服务端软件取决于你的客户端是什么系统和你对配置复杂度的容忍度。标题里的两台PC最常见的组合是Windows对Windows其次是Windows对Linux或Linux对Linux我按这三类分别说。第一类是Windows自带IIS的FTP服务系统功能里勾选「FTP服务」和「IIS管理控制台」就能装不需要第三方包。优点是系统自带、不用装东西缺点是配置界面藏得深被动端口范围要在两三层菜单里翻而且IIS FTP对用户隔离策略的默认行为在跨机器访问时经常给出乎意料的权限错误。这个方案适合临时用一下、不想装任何额外程序的场景。第二类是FileZilla Server我在这类场景里用得最多。它把监听IP、被动端口范围、用户权限、TLS选项都放在一个管理界面里配置项直白反馈的信息也够多。更重要的是它自带主动/被动模式的可视化状态连不上时能直接看到是哪一步断的。缺点是需要安装一个Windows服务杀毒软件偶尔会对它的服务注入有误报。第三类是Linux下的vsftpd。如果你的两台PC里有一台是Ubuntu或者CentOSvsftpd是事实标准。配置比Windows方案更简单一个/etc/vsftpd.conf文件搞定全部行为服务端资源占用极低。代价是你得会用systemctl管理服务、会用ss或netstat看端口监听状态对纯Windows用户来说门槛偏高。2.3 核心参数被动端口范围、超时时间、传输模式不管你选哪款服务端有三个参数是你必须显式检查的默认值往往在生产环境里刚好不够用。被动端口范围。这项必须设置否则服务端会在连接时随机挑一个系统临时端口给客户端防火墙策略根本没法写。我习惯设成5010到5100一共90个端口理论上支持45个并发数据连接对两台PC之间的传输绰绰有余。如果你要在防火墙里放行记得放行TCP的21和5010-5100一次写进规则里。控制连接超时。默认值一般是300秒意思是控制连接空闲5分钟没指令服务器就断开。这个参数容易在传大文件时坑人——如果客户端的数据连接传完一个文件后又长时间不发起下一个指令控制连接会被服务器掐断第二次传输直接报错。我一般把这个值调到900秒或更大反正是两台PC之间的专用通道没必要省这点资源。传输模式。ASCII模式和Binary模式的区别是换行符处理ASCII会把文件内容里的换行做转换Binary是原样传。两台PC之间传文本、压缩包、ISO、数据库备份这类文件统一用Binary省得文件传过去之后校验和都对不上。3. 用FileZilla Server把一台PC变成FTP服务器从安装到用户授权服务端软件定了接下来就是动手把其中一台PC变成FTP服务器。以下步骤基于FileZilla Server的Windows版本这是我在两台PC间做FTP通讯时最常用的路径。你跟着把监听IP指对、被动端口配上、用户权限收好服务端这块就算跑通了。3.1 安装与初始配置监听IP和被动端口怎么填安装FileZilla Server的过程不复杂一路Next就行但有一个关键选项在安装向导里容易被跳过去——Server Listening IP服务监听IP。默认值是所有可用IP这在一台有多个网卡的PC上是隐患因为FTP服务会暴露在所有网络接口上。我建议在安装后立即打开管理界面进入「编辑 - 设置」做三个修改。第一在「General settings」里把监听IP改成这台PC实际对外的局域网IP比如192.168.1.100而不是留空监听所有接口。第二在「Passive settings」里勾选「Use custom port range」并填上5010-5100。第三如果这台PC有防火墙确认管理界面的「被动端口范围」和你后续在防火墙里放行的范围一致差了任何一个端口都可能出现连得上但传不了的情况。三个配置改完后重启一下FileZilla Server服务然后在管理界面里确认状态是「Online」。这时候你在同网段的另一台PC上执行一个telnet测试可以看到21端口已经开放telnet 192.168.1.100 21正常会看到类似220-FileZilla Server的欢迎横幅。如果telnet直接提示无法连接先查服务状态和Windows防火墙别急着折腾用户权限。3.2 创建用户和虚拟目录把访问权限精确到目录级服务端安装完了接下来是用户授权。FileZilla Server的权限模型是「用户 挂载点」每个用户添加虚拟目录映射到服务器本地的真实路径。我在管理界面的「用户」标签页里点「添加用户」用户名和密码按需设。然后关键一步是「挂载虚拟目录」——我一般把FTP的根目录挂到这台PC的一个专门数据盘上比如D:\ftproot不挂C盘系统目录避免日志和临时文件把系统盘塞满。权限勾选上「文件」里的「读取」和「写入」是基础目录里的「列出」和「创建」按场景开。如果你只做单向推文件客户端负责往服务器传那就勾读取和列出写入和创建不勾——少一个权限少一个坑。下面是用户权限的常用组合表使用场景需要的权限建议关闭的权限双向文件同步文件的读取写入目录的列出创建无客户端单向上传备份文件的写入目录的创建文件的读取、删除客户端单向下载分发文件的读取目录的列出文件的写入、删除多人共享目录文件的读取目录的列出全部写权限这里有个细节很容易踩坑FileZilla Server对「追加」权限的控制跟「写入」是分开的。如果你向服务器传的是日志文件希望每次追加而不是覆盖必须单独勾选「追加」。经常有人只勾了写入结果日志文件每次都被覆盖成单行然后跑来问为什么文件内容丢了。3.3 防火墙入站规则怎么加一次放行21和被动端口段Windows防火墙默认拦入站连接就算FileZilla Server本身跑起来了外部的客户端还是进不来。我每次装完服务端后的固定动作是把入站规则按端口段写进防火墙。用管理员权限打开PowerShell执行下面的命令一次创建两条入站规则# FTP控制端口21 netsh advfirewall firewall add rule nameFTP_Control_21 dirin actionallow protocolTCP localport21 # FTP被动数据端口5010-5100 netsh advfirewall firewall add rule nameFTP_Passive_5010-5100 dirin actionallow protocolTCP localport5010-5100第一条规则放行21端口保证控制连接能建立第二条放行被动模式的数据端口段保证实际传输能走通。命令里的dirin指入站方向actionallow是放行protocolTCP限定协议localport指定本机端口。执行完后可以在「Windows Defender防火墙 - 高级设置 - 入站规则」里看到这两条记录。顺带说一个经验如果你用了一款第三方安全软件比如360或者火绒它们的网络防护组件会独立于Windows防火墙做拦截需要在软件自己的「联网控制」里放行FileZilla Server进程不然你Windows防火墙全放行了流量还是到不了FTP服务。4. 客户端怎么连cmd下的ftp命令和图形化客户端选哪个服务端就绪剩下就是客户端这台PC的事了。连接FTP有两条路一条是用Windows自带的命令行ftp工具适合写脚本和自动化一条是装FileZilla Client或WinSCP这类图形化工具适合手动操作和调试。两条路我都常用分场景选。4.1 cmd下ftp命令的最小可运行脚本登录、切目录、传文件、退出带参数的FTP手动操作偶尔可用真要连续传多个文件Windows自带的ftp.exe其实能跑批处理。我习惯把一组ftp命令写在文本文件里然后用ftp -s让脚本逐行执行这样能自动传一批文件。假设服务端IP是192.168.1.100用户名是ftpuser密码是ftppass。新建一个upload.txt内容如下open 192.168.1.100 ftpuser ftppass binary prompt off lcd D:\local_data cd /uploads mput *.bak bye然后在这个文本文件所在目录执行ftp -s:upload.txt这段脚本的每一行都是cmd下ftp的保留指令open建立连接紧接着两行是用户名和密码binary把传输模式切成二进制保证文件字节不被改动prompt off关闭逐个询问配合mput批量上传时不会每个文件都停下来让你按y确认lcd切换本地工作目录cd切换服务器目录路径对不上会在屏幕上直接报550错误mput *.bak把当前本地目录下所有.bak文件传上去。最后bye断开。脚本里的路径要特别注意。lcd D:\local_data是客户端本机路径cd /uploads是服务器上相对FTP根目录的路径这个根目录对应服务端挂载的虚拟目录比如D盘的那个目录。cmd的ftp工具没有ls之外的本地浏览能力路径写错只能靠报错信息反推。4.2 图形化客户端连接FileZilla Client的站点管理器配置项怎么填图形化工具里FileZilla Client和WinSCP都免费且成熟。我只说FileZilla Client的站点管理器里跟两台PC通讯直接相关的四个配置项。主机填服务器IP比如192.168.1.100端口默认21如果你在服务端把监听端口改了才需要动这里协议选「FTP - 文件传输协议」别选成SFTPSFTP走的是SSH端口22跟今天搭的FTP不是一回事登录类型选「正常」填用户名密码。连接前点开「传输设置」标签确认「被动」模式是选中状态。如果不改FileZilla Client默认就是被动模式但如果是旧版或者配置被重置成了主动连接后会一直卡在列目录那一步。我习惯性在这个界面看一眼——治好了我好几次「连上但啥也看不见」的毛病。图形化客户端还有一个隐藏功能适合双机调试传输失败时窗口下方会显示具体的FTP响应码。比如530是认证失败550是权限或路径问题425是数据连接建立失败。看到425九成是被动端口没放行返回服务端检查防火墙规则。4.3 Windows文件管理器直接访问FTP另一种零安装连接方式如果两台PC都是Windows其实还有第三条路——资源管理器地址栏直接输入FTP地址。在另一台PC的文件夹地址栏输ftp://192.168.1.100回车后提示输入用户名密码连上后就是一个普通文件夹窗口拖文件进去就等于上传。这种方式不依赖任何第三方客户端但两个限制你要知道。一是它默认走被动模式的而且Windows的WebClient服务如果被停用了会提示无法访问二是中文文件名偶尔出现乱码因为资源管理器访问FTP默认用的编码跟FileZilla Server的UTF-8设置不一定对齐。给个直接判断临时传几个文件、不想装软件用资源管理器要传批量文件、要反复连通断、要写进自动化用命令行脚本要看得见传输进度和排错细节用FileZilla Client。三种方式连的是同一个服务端按需切就行。5. 两台PC间FTP通讯避坑指南连不上、传不动、传完变了双机FTP最气人的故障不是完全连不上而是看着连上了、目录也列出来了一传大文件就死或者传完了校验才发现文件缺了字节。这批问题我按「现象 → 原因 → 解决」写了四条都是我在真实环境里反复踩过的。5.1 现象客户端能登录但列目录卡死或超时这个现象很经典可以用ftp客户端看到登录成功的欢迎信息但一列目录就转圈最后超时断开。你重试几次会发现登录永远成功目录永远出不来。原因在被动模式的数据连接没走通。登录用的是21端口那是控制连接列目录需要开一条数据连接去传目录列表。服务端的被动端口5010-5100如果在防火墙里没放行服务器发出PASV响应后客户端去连5010端口被拦自然卡死在列目录这步。解决方法是回到第3.3节那两条netsh命令确认5010-5100的入站规则存在且生效。另一个隐蔽点云主机或虚拟机如果带了安全组规则做在安全组层面Windows防火墙放行了也没用要去安全组的入站规则里把同样的端口段加上。5.2 现象传大文件到一半断掉小文件正常只传小文件时一切正常传一个500MB以上的压缩包就中途断开重连后从头再传。这个现象通常不是网络抖动而是两个超时参数合谋的结果。原因有两个走向。一个是服务端的控制连接超时设短了FTP控制连接长时间闲置会被服务端掐掉但数据连接还在传断了之后客户端不知道控制连接已失效等到传完才发现没有回执。另一个是客户端的防火墙或NAT会话老化时间太短无状态防火墙会在长时间数据流上自动清会话。解决方法是把服务端的控制连接超时调大到900秒以上同时把客户端的TCP超时参数也用系统默认值不要手动调小。如果是跨网段传输检查中间设备的会话老化时间是否低于传输预计时长。Windows专有网络的网络配置文件改成「专用网络」也会减少系统防火墙对长连接的中途插断概率。5.3 现象传上去的文件md5和源文件对不上传输结束显示成功文件大小也对但接收方打开压缩包报损坏用脚本比对md5会发现不一致。这是FTP最容易被忽略的坑传输模式选成了ASCII。原因在ASCII模式下FTP客户端和服务器会对换行符做转换Windows的CRLF和Linux的LF互相转换任何二进制文件经过这种转换都会悄悄被改字节。压缩包、可执行文件、镜像文件、数据库文件但凡被ASCII模式传过几乎必坏。解决方法是客户端连接后明确执行binary指令或者在图形客户端里把默认传输模式改成二进制。对于已经传坏的文件没有后悔药只能重新传输。我一般在批处理脚本里第一行就写binary防止默认模式坑人。5.4 现象FTP服务正常但另一台PC就是ping不通连FTP之前先ping服务器IP发现根本不通于是怀疑FTP服务没起来。但服务端本机看FTP服务明明是正常的。原因是两台PC不在同一网段中间隔着交换机或路由器网络互通本身就没解决。FTP是应用层协议底层的IP连通性是前提条件。ping不通就不要查FTP了先把网络弄通再说。解决方法是检查两台PC的IP地址和子网掩码判断是否在同一网段。不在的话要么改IP到同一网段要么在路由器上配静态路由要么把其中一台PC的网关指到路由器。这里用一套命令在客户端查一下网络状态就能定位ipconfig /all ping 192.168.1.100 -t tracert 192.168.1.100ipconfig /all看自己IP和网关ping -t持续探活tracert看路由到哪里断了。定位到网络层不同FTP的配置再正确也白搭——这是所有FTP排错里最基础也最容易被忽略的一条。6. 把FTP传输写成自动化批处理脚本与定时任务附一份传输后的完整性检查办法手动传输跑通只是第一步真实工作中用到两台PC间FTP的场景往往是重复的每天下班后把日志从A机拽到B机、每周把数据库备份推到备份服务器。这类需求一旦做一次两次还可以手点做一个月就烦了。把FTP命令封装成批处理再用Windows任务计划程序定时跑是成本最低的自动化路径。6.1 用批处理封装FTP会话自动登录上传并记录日志延续第4.1节的脚本思路把命令行ftp工具的指令写进脚本文件再包一层批处理做时间戳和日志。下列代码保存为upload.batecho off set BACKUP_DIRD:\local_data set FTP_SERVER192.168.1.100 set FTP_USERftpuser set FTP_PASSftppass set LOG_FILED:\logs\ftp_upload_%date:~0,4%%date:~5,2%%date:~8,2%.log echo %date% %time% - Start FTP upload %LOG_FILE% echo open %FTP_SERVER% D:\temp_ftp_cmd.txt echo %FTP_USER% D:\temp_ftp_cmd.txt echo %FTP_PASS% D:\temp_ftp_cmd.txt echo binary D:\temp_ftp_cmd.txt echo prompt off D:\temp_ftp_cmd.txt echo lcd %BACKUP_DIR% D:\temp_ftp_cmd.txt echo cd /uploads D:\temp_ftp_cmd.txt echo mput *.bak D:\temp_ftp_cmd.txt echo bye D:\temp_ftp_cmd.txt ftp -s:D:\temp_ftp_cmd.txt %LOG_FILE% 21 echo %date% %time% - End FTP upload %LOG_FILE% del D:\temp_ftp_cmd.txt这个批处理做了四件事动态生成ftp命令脚本、执行ftp会话、把屏幕输出重定向到日志文件、结束后删除临时脚本。密码明文写进临时文件用完即删常年在命令行混的人都这么干但你也得知道这是一个风险项——如果在多人共用的机器上跑这个临时文件在批处理运行期间是能被其他进程读到的。定时执行交给Windows任务计划程序打开「任务计划程序 - 创建基本任务」触发器选「每天」并设定时间操作选「启动程序」程序填upload.bat的完整路径。关键设置「使用最高权限运行」这个选项别勾除非你的FTP账号真的需要管理员权限访问共享目录否则多一个权限就多一条被攻击的路。6.2 传输完整性检查拿文件大小和md5给结果兜底FTP本身不校验文件完整性传输状态码是0不代表文件内容没坏。我在自动化脚本里加了两道检查这道工序能提前揪出第5.3节那种ASCII模式传坏文件的情况不需要等到接收方打开压缩包才发现。第一道是文件大小校验。在批处理脚本里ftp执行完后用dir命令对比源文件和目标机的文件大小。严格的做法是在服务器端执行SIZE指令读取远端文件大小和本地%zp变量比对——但cmd的批处理对FTP交互能力有限我实际用得更粗暴在传输开始前和结束后各拉一次远端目录列表存入本地文件再比对文件大小列。# 这一步适合在另一台PC上做客户端侧校验把远端文件名和大小拉到本地 ftp -s:list_remote.txt remote_list.log第二道是md5或SHA256校验。FTP协议本身不带校验和但现代服务器大多支持MFMT这类扩展命令不会帮你算哈希。常用的做法是在目标机上单独跑一个校验脚本或者如果两侧都是Windows用PowerShell的Get-FileHash对刚传完的文件做比对。做进自动化的代价是多一步远程执行但换来的确定性很强——文件对不对用哈希说话比「传输成功」四个字靠谱得多。6.3 我的收尾习惯每次配置完FTP通道固定做两件事一个是把被动端口范围、防火墙规则、账号权限这三样打成一个文档放在服务器PC的桌面上。半年后你忘了当初怎么配的翻这个文档比翻聊天记录快得多。另一个是首次连通后立刻传一个测试文件、删除、再传确认真实路径和权限都没问题再交给方使用——我在这上面吃过亏以为配置没问题就放手结果别人第一次用就连不上最后查了半小时发现是服务端临时改了监听端口没同步给对接人。两台PC间的FTP通讯技术上没有任何玄学就是端口、权限、模式、防火墙四件事。把这四件事理顺十分钟内跑通是常态理顺不了就是信息在某一环断掉了。希望这些配置和排查习惯能帮到你省下那些在防火墙和端口之间反复来回的时间。本文还有配套的精品资源点击获取
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。