简介:围绕 Serv-U 14.0 白金版历史记录界面整理的前端资源包,面向需要了解或复用 FTP 服务端管理界面样式与交互的开发者、运维人员及前端学习者,可用于历史记录页面的界面还原、样式参考与交互逻辑分析。压缩包共 6 个文件,以 gif 图标、html 页面、js 脚本和 css 样式表为主,整体约 23KB,体积轻量,便于直接查阅与拆解。已有 169 人学习,说明其对关注 Serv-U 界面实现细节的读者具有一定参考价值。包内围绕历史记录模块提供页面结构、视觉样式、前后翻页导航图标及脚本交互等素材,可帮助读者理解传输历史列表的布局组织、按钮与指示器图形运用、动态加载或筛选排序的实现思路,也适合作为管理后台历史记录页面的轻量参考案例,用于课程设计、界面仿写或前端组件研究。
1. Serv-U 14.0 白金版安装前先看:21 端口能登录却不列目录的反直觉坑
Serv-U 14.0 白金版装在内网文件交换场景里很常见,尤其是需要给外部合作方开一个受控 FTP 目录、又不想动现有文件服务器的时候。很多人第一次装,看到安装向导走完、服务也起来了,用客户端一登录提示 230 登录成功,就以为完事;结果一列目录就卡住,或者上传到一半断开。问题往往不在账号密码,而在 FTP 的双通道模型:21 端口只是控制连接,真正传数据的是被动模式端口段,防火墙少放一个范围就会翻车。这套环境适合运维在 Windows Server 上给业务开独立文件交换区,也适合开发在测试环境复现客户现场。装之前先把系统版本、运行库、端口和目录权限列清,后面能少走很多弯路。
2. 环境核对与安装包准备:Windows Server 版本、运行库和端口先列清
Serv-U 14.0 属于偏老版本的 FTP 服务端,装之前不建议直接拿一台已经跑了一堆业务的机器上手。常见做法是找一台干净的 Windows Server 2016 或 2019 64 位机器,先在测试环境把安装、授权、被动模式、NTFS 权限走一遍,再迁到正式机。不是越新的系统越合适,老版本安装包在新系统上可能遇到运行库、管理控制台浏览器兼容、服务账户权限模型差异这些问题。下面按“系统—安装包—端口—账户—目录”五件事拆开,每一步都给检查命令,方便你照着核对。
2.1 系统版本、运行库和磁盘空间核对
先确认系统位数和版本,别在 32 位系统上装 64 位安装包。Serv-U 14.0 常见依赖是 .NET Framework 4.5 或更高版本,安装向导如果提示缺运行库,按提示补对应版本即可,不要一次性塞一堆来路不明的运行库,后面出问题很难定位。磁盘方面,程序目录和 FTP 根目录最好分开:程序放D:\Serv-U,数据放D:\FTPRoot或独立数据盘。FTP 根目录不要放在系统盘根目录,也不要用带中文和空格的路径,后面写防火墙规则、备份脚本、日志采集都会省事。
# 查看系统版本、位数和已安装的运行库基础信息 $os = Get-CimInstance Win32_OperatingSystem $os.Caption $os.OSArchitecture $os.Version # 查看 .NET Framework 发布版本号,4.5 以上再继续 Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" | Select-Object Release, Version # 查看磁盘剩余空间,FTP 数据盘至少留出业务预估容量 Get-PSDrive -PSProvider FileSystem | Select-Object Name, Used, Free这段命令只做环境盘点,不改系统配置。Caption和OSArchitecture用来确认是不是 Windows Server 64 位;Release是 .NET Framework 的版本标识,数值太低就先补运行库;Get-PSDrive看剩余空间,FTP 目录一旦被写满,表现可能不是“磁盘满”,而是上传中断、日志报错,排查时容易绕远。我一般还会看一眼机器是不是域控:域控上装 FTP 服务不是不行,但服务账户、组策略、目录权限会互相影响,测试环境先避开。
2.2 安装包、授权文件和安装目录规划
安装包按项目交付目录里的 Serv-U 14.0 白金版文件取用,先核对文件名、大小和哈希,再复制到目标机。不要直接在压缩包里双击运行,也不要把安装包放在 FTP 根目录里让外部用户能读到。授权文件单独放D:\Serv-U\license这类程序目录外的位置,导入后在管理控制台确认授权状态。安装目录建议固定为D:\Serv-U,日志目录、备份目录都围绕它规划,后面迁移时只改盘符不改结构。
# 校验安装包哈希,和交付说明里的值对比 Get-FileHash ".\Serv-U-Server-14.0.exe" -Algorithm SHA256 # 建程序目录、日志目录、备份目录,路径按实际盘符调整 New-Item -ItemType Directory -Path "D:\Serv-U" -Force New-Item -ItemType Directory -Path "D:\Serv-U\Logs" -Force New-Item -ItemType Directory -Path "D:\Serv-U\Backup" -ForceGet-FileHash的-Algorithm SHA256是校验算法,交付说明给什么就用什么,不要自己换算法后说对不上。New-Item -Force在目录已存在时不会报错,适合写成部署脚本的一部分。安装目录不要用Program Files下的默认路径,倒不是不能装,而是后面找日志、改配置、做备份时路径里带空格,脚本里容易漏引号。我一般还会把安装包和授权文件复制一份到备份目录,方便回滚到同一版本。
2.3 端口、服务账户和安装前冲突检查
FTP 控制连接默认 21 端口,被动模式还要一段数据端口,常见做法是规划50000-50100这种一百个端口的小范围,够用又好放行。装之前先看 21 端口有没有被 IIS FTP、旧版 Serv-U、文件同步工具占用。服务账户方面,测试环境可以用 Local System 快速跑通,正式环境我一般建一个专用本地账户或域账户,只给它 FTP 根目录的修改权限,不给管理员权限。这样即使服务被利用,影响面也可控。
# 查 21 端口占用,输出里最后一列是 PID Get-NetTCPConnection -LocalPort 21 -ErrorAction SilentlyContinue | Select-Object LocalAddress, LocalPort, State, OwningProcess # 根据 PID 找进程名,确认是不是旧 FTP 服务 Get-Process -Id (Get-NetTCPConnection -LocalPort 21 -ErrorAction SilentlyContinue).OwningProcess # 查是否装了 IIS FTP 组件,Server 系统可用 Get-WindowsFeature Web-FTP-Server -ErrorAction SilentlyContinueGet-NetTCPConnection比netstat -ano更好读,OwningProcess就是占用端口的进程 ID。查到占用后不要直接杀进程,先确认是哪个业务,能停就停,不能停就把 Serv-U 控制端口改成 2121 之类,再在客户端和防火墙里同步改。Get-WindowsFeature只适合 Windows Server,返回Installed就说明 IIS FTP 已装,装 Serv-U 前先停掉对应服务,否则两个 FTP 服务抢 21 端口,表现就是 Serv-U 服务起不来或者客户端连到别的服务上。安装前把这些查完,后面安装向导里填参数会顺很多。
3. Serv-U 14.0 安装向导:从 exe 到管理控制台首次登录
安装向导本身不复杂,容易出问题的是服务账户、管理控制台入口和安装后的第一次自检。很多人一路下一步,装完不知道管理控制台地址,或者把管理员密码设成弱口令,后面接业务时又要迁移。下面按安装向导的实际顺序走:先以管理员身份启动安装包,再选目录和服务账户,最后记录管理控制台地址并做服务自检。
3.1 安装向导里最该停下来的三个参数
启动安装包时右键“以管理员身份运行”,不要双击后让系统自己提权,否则安装目录权限可能不完整。向导里第一个要停下来的地方是安装目录,改成D:\Serv-U,别用默认路径。第二个是服务账户,测试环境可以先用 Local System,正式环境选专用账户,并提前把该账户加入 FTP 根目录的授权组。第三个是管理控制台端口和管理员密码,端口如果和本机其他 Web 管理服务冲突就换一个,密码用独立强密码,不要和系统管理员密码共用。
# 以管理员身份打开安装向导,安装包文件名按实际替换 Start-Process ".\Serv-U-Server-14.0.exe" -Verb RunAs # 安装完成后查看 Serv-U 相关服务,服务名可能带版本后缀 Get-Service -Name "Serv-U*" | Format-Table Name, Status, StartType # 查看服务可执行路径和启动账户,确认没有指到临时目录 Get-CimInstance Win32_Service -Filter "Name LIKE 'Serv-U%'" | Select-Object Name, State, StartMode, StartName, PathNameStart-Process -Verb RunAs会弹 UAC,确认后再走向导。Get-Service里Status是运行状态,StartType最好是 Automatic,否则重启后 FTP 不会自己起来。Win32_Service的StartName能看出服务跑在 Local System 还是专用账户上,PathName能确认程序路径没有指到用户临时目录。如果这里看到服务账户是 Local System,而正式环境要求最小权限,就回到服务属性里改账户,改完重启服务再测。安装向导如果提示导入授权文件,按交付说明导入,导入后在管理控制台看授权状态,不要等业务接入了才发现是试用或未授权。
3.2 管理控制台首次登录和密码修改
安装完成后,向导通常会给出管理控制台地址。不同小版本的入口端口可能不一样,别照抄网上的8080或44300,以安装完成页显示为准。浏览器打开后如果提示证书不受信任,测试环境可以先继续,正式环境建议换成受信任证书。首次登录用安装时设置的管理员账户,登录后第一件事是改密码、确认管理员邮箱或通知方式,第二件事是看日志目录和授权状态。
# 用安装完成页给出的地址打开管理控制台,端口按实际替换 Start-Process "https://localhost:<管理端口>" # 本机监听端口核对,确认管理控制台端口在听 Get-NetTCPConnection -State Listen | Where-Object { $_.LocalPort -in 21, 8080, 443, 44300 } | Select-Object LocalAddress, LocalPort, OwningProcessStart-Process只是打开浏览器,<管理端口>要换成向导里实际显示的端口。Get-NetTCPConnection -State Listen用来确认端口确实在本机监听,-in后面列的是常见候选端口,实际排查时以安装日志和向导页为准。如果浏览器打不开,先看服务是否运行,再看本机防火墙有没有拦管理端口,最后看是不是浏览器强制跳 HTTPS 而服务只开了 HTTP。管理密码改完后不要只记在浏览器里,正式环境应该进密码管理流程,避免交接时找不到。
3.3 安装后自检:服务、日志、授权三件事
安装完不要急着建域,先做三件事:服务是否自动启动、日志目录是否可写、授权是否正常。服务自检看Get-Service和事件查看器;日志自检看安装目录下的Logs子目录有没有新文件;授权自检在管理控制台里看状态和到期时间。这三件事任何一件不对,后面建域、建用户都会出怪问题。比如服务账户对日志目录没有写权限,FTP 能登录但日志全是空,出问题就没有黑匣子可查。
# 重启 Serv-U 服务并观察状态,服务名按实际替换 Restart-Service -Name "Serv-U*" -ErrorAction Stop Start-Sleep -Seconds 3 Get-Service -Name "Serv-U*" | Format-Table Name, Status, StartType # 查看日志目录最近文件,确认服务账户能写日志 Get-ChildItem "D:\Serv-U\Logs" -File | Sort-Object LastWriteTime -Descending | Select-Object -First 5 Name, Length, LastWriteTimeRestart-Service后面加-ErrorAction Stop是为了让脚本在服务重启失败时立刻停下,不要继续往下跑。Start-Sleep给服务三秒启动时间,随后再看状态。日志目录如果最近文件时间还停在安装前,或者文件大小为 0,优先查服务账户对D:\Serv-U\Logs的 NTFS 权限。安装后自检做完,再进管理控制台建域,顺序不要反。
4. 域、用户与目录权限:白金版里三层权限怎么落到 NTFS
Serv-U 的权限不是一层,常见是三层:Serv-U 域和用户权限、目录访问规则、Windows NTFS 权限。三层里任何一层没给对,表现都可能是“登录成功但列不出目录”或者“能读不能写”。白金版里域、用户、目录规则都能配得比较细,但细不等于要全开。我的习惯是先把 FTP 根目录的 NTFS 权限收干净,再在 Serv-U 里按用户给最小目录权限,最后用防火墙把被动模式端口放行。下面按建域、建用户、配目录、放行端口四步走。
4.1 创建域和监听地址
管理控制台里新建域,域名称用业务名,不要用中文和空格;监听地址先用0.0.0.0表示本机所有网卡,端口 21。如果机器有多网卡,正式环境可以绑到内网业务 IP,减少暴露面。域建好后先别急着加用户,确认域状态是运行中,再看监听端口有没有起来。域类型按业务选 FTP 或 FTPS,如果后面要上 TLS,先在测试环境把证书和客户端兼容性走一遍,不要直接在生产域上开。
# 建域后核对 21 端口监听地址 Get-NetTCPConnection -LocalPort 21 -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess # 如果绑定了指定 IP,确认监听地址不是 0.0.0.0 Get-NetIPAddress -AddressFamily IPv4 | Select-Object IPAddress, InterfaceAlias, PrefixLengthGet-NetTCPConnection里LocalAddress是0.0.0.0说明所有网卡都在听,如果是具体 IP 就只在该网卡听。Get-NetIPAddress用来核对本机 IP,别把公网地址填进内网域监听里。域建好后如果 21 端口没起来,回管理控制台看域是否启动、端口是否被别的服务占用。正式环境我一般会把管理控制台端口和 FTP 端口分开记录,交接时写进交付单,避免下一个人找不到入口。
4.2 用户、主目录和 NTFS 权限
建用户时登录 ID 用英文数字,密码单独生成,不要和系统账户同名同密码。主目录指向D:\FTPRoot\<业务名>\<用户名>,不要直接指到磁盘根。Serv-U 里给用户配目录访问规则:需要上传就给 Write,需要看列表就给 List,需要删改就给 Delete 和 Rename,只读用户就别给 Write。NTFS 这边,FTP 根目录先断继承,再给服务账户或授权组修改权限,给 SYSTEM 和 Administrators 完全控制,普通用户组只给需要的权限。
# 创建 FTP 根目录和授权组,组名按实际业务替换 $ftpRoot = "D:\FTPRoot" $groupName = "ServUFTPUsers" New-Item -ItemType Directory -Path $ftpRoot -Force New-LocalGroup -Name $groupName -ErrorAction SilentlyContinue # 断开继承,只保留明确授权 icacls $ftpRoot /inheritance:r icacls $ftpRoot /grant "SYSTEM:(OI)(CI)F" /T icacls $ftpRoot /grant "Administrators:(OI)(CI)F" /T icacls $ftpRoot /grant "${groupName}:(OI)(CI)M" /T # 查看最终权限,确认没有 Everyone 完全控制 icacls $ftpRoot/inheritance:r是去掉从上级目录继承来的权限,避免上级目录给了 Everyone 后 FTP 目录也跟着全开。(OI)(CI)表示对象继承和容器继承,F是完全控制,M是修改。/T递归应用到子目录和文件。最后icacls不带参数就是查看权限,重点看有没有Everyone:(F)这种过宽条目。服务账户如果不是 Local System,要确保它在ServUFTPUsers组里,或者单独给它目录权限,否则 Serv-U 能登录但读写文件会被 NTFS 拦住。
4.3 被动模式端口范围和防火墙放行
FTP 被动模式下,客户端登录后服务端会告诉客户端一个数据端口,客户端再连这个端口传数据。只放行 21 端口,表现就是能登录、能看欢迎信息,一列目录或上传就超时。常见做法是在 Serv-U 域设置里把被动端口范围固定成50000-50100,然后在 Windows 防火墙放行同样的 TCP 范围。如果机器前面还有 NAT 或外层防火墙,也要做同样的端口映射,并在域设置里填外部地址,别只填内网 IP。
# 放行 FTP 控制端口 21,只对域和专用网络生效 New-NetFirewallRule -DisplayName "Serv-U FTP Control 21" ` -Direction Inbound -Protocol TCP -LocalPort 21 ` -Action Allow -Profile Domain,Private # 放行被动模式数据端口范围,和 Serv-U 域设置保持一致 New-NetFirewallRule -DisplayName "Serv-U FTP Passive 50000-50100" ` -Direction Inbound -Protocol TCP -LocalPort 50000-50100 ` -Action Allow -Profile Domain,Private # 查看规则是否生效 Get-NetFirewallRule -DisplayName "Serv-U FTP*" | Select-Object DisplayName, Enabled, Direction, Action-Profile Domain,Private表示只在域网络和专用网络生效,公网配置文件不要随便放行。-LocalPort 50000-50100必须和 Serv-U 域设置里的被动范围一致,差一个端口都会出现偶发连不上。Get-NetFirewallRule看规则是否启用、方向是不是入站、动作是不是允许。正式环境如果前面有 NAT,除了本机防火墙,还要在 NAT 设备上映射同样的端口范围,并在 Serv-U 域设置里填外部地址或被动模式外部 IP,否则客户端拿到的是内网地址,连不上。
5. 常见问题排查:Serv-U 14.0 能登录却列不出目录的 4 个坑
FTP 排查最怕只看登录成功。登录成功只说明控制连接通了,数据连接、权限、证书任何一环出问题,都会表现成“列不出目录”“上传失败”“登录后马上断开”。下面四条是装 Serv-U 14.0 白金版时最常见的翻车点,每条按现象、原因、解决写,命令可以直接在目标机上跑。排查时按顺序来:先看端口,再看被动模式,再看 NTFS,最后看证书和客户端。
5.1 21 端口被占用:服务起不来或客户端连到旧服务
现象:安装完成服务启动失败,或者客户端登录后看到的欢迎信息不是 Serv-U;管理控制台里域显示未运行,事件查看器有端口绑定失败记录。原因通常是本机已经装了 IIS FTP、旧版 Serv-U、文件同步工具,或者上一次安装残留的服务还在跑。21 端口只有一个服务能监听,谁先占谁赢,后装的只能失败。
解决:先用Get-NetTCPConnection -LocalPort 21找 PID,再用Get-Process -Id确认进程。如果是 IIS FTP,停掉FTPSVC并禁用;如果是旧 Serv-U,卸载或改端口;如果是其他业务,评估能不能改 Serv-U 控制端口。改端口后客户端、防火墙、NAT 映射都要同步改,不要只改服务端。
# 找 21 端口占用进程 $conn = Get-NetTCPConnection -LocalPort 21 -ErrorAction SilentlyContinue $conn | Select-Object LocalAddress, LocalPort, State, OwningProcess if ($conn) { Get-Process -Id $conn.OwningProcess | Select-Object Id, ProcessName, Path } # 如果是 IIS FTP,停服务并设为禁用 Stop-Service FTPSVC -ErrorAction SilentlyContinue Set-Service FTPSVC -StartupType Disabled -ErrorAction SilentlyContinueOwningProcess是占用端口的 PID,Get-Process能看出进程路径。Stop-Service只停当前运行,Set-Service -StartupType Disabled防止重启后又起来。改 Serv-U 端口不是只改域端口,管理控制台里的域监听端口、客户端连接端口、防火墙规则、NAT 映射都要一起改,否则会出现“本机测试通、外部连不上”的玄学问题。
5.2 被动模式端口未放行:能登录、列目录超时
现象:客户端输入账号密码后提示登录成功,执行ls或打开目录时一直卡住,最后超时;用主动模式可能能列,但换被动模式就不行。原因多半是只放行了 21 端口,Serv-U 域设置里的被动端口范围没配,或者配了但 Windows 防火墙、NAT 没放行。FTP 的数据连接是客户端主动连服务端的数据端口,防火墙少一个范围就断。
解决:在 Serv-U 域设置里固定被动端口范围,比如50000-50100;在 Windows 防火墙放行同样范围;有 NAT 就映射同样范围,并在域设置里填外部地址。客户端侧确认使用被动模式,很多图形客户端默认就是被动,命令行ftp可以加-d看协商过程。排查时用Test-NetConnection从客户端测数据端口,不要只测 21。
# 从客户端测控制端口和几个被动端口,端口按实际范围替换 Test-NetConnection -ComputerName 192.168.10.20 -Port 21 50000..50002 | ForEach-Object { Test-NetConnection -ComputerName 192.168.10.20 -Port $_ }Test-NetConnection的-Port是目标端口,TcpTestSucceeded为 True 才说明网络层通。被动端口不需要每个都测,抽头几个和尾部几个即可。如果 21 通、数据端口不通,优先查防火墙和 NAT,不要先怀疑 Serv-U 用户权限。还有一种情况是域设置里被动端口范围为空,Serv-U 会随机用端口,防火墙没法跟,正式环境一定要固定范围。
5.3 NTFS 权限和服务账户不匹配:能登录不能写
现象:登录成功,能看目录,但上传提示 550 权限拒绝,或者新建文件夹失败;换管理员账号登录又正常。原因通常是 Serv-U 服务账户对 FTP 根目录没有修改权限,或者目录断继承后只给了用户组没给服务账户,或者服务账户根本不在授权组里。Serv-U 用户是虚拟账户时,最终落盘权限还是看服务账户或映射的 Windows 账户。
解决:先看服务跑在哪个账户上,再看该账户对目标目录有没有修改权限。用icacls查看,缺权限就补,不要直接给 Everyone 完全控制。用户主目录如果单独断继承,要确保服务账户或授权组在每一层都有权限。改完权限重启 Serv-U 服务,再让客户端重新登录测试。
# 查看服务账户和目录权限 Get-CimInstance Win32_Service -Filter "Name LIKE 'Serv-U%'" | Select-Object Name, StartName icacls "D:\FTPRoot" icacls "D:\FTPRoot\业务目录" # 给授权组补修改权限,组名按实际替换 icacls "D:\FTPRoot\业务目录" /grant "ServUFTPUsers:(OI)(CI)M" /TStartName是服务账户,icacls输出里看该账户或所在组有没有M或F。不要用Everyone:(F)图省事,FTP 目录一旦对所有人完全控制,后面出问题无法审计。改权限后重启服务是为了让服务重新读取账户令牌,有时候不重启也能生效,但重启一次更稳妥。正式环境建议把 FTP 根目录、用户目录、日志目录的权限做成表格,交接时一起交付。
5.4 证书、TLS 和客户端兼容:登录后马上断开
现象:管理控制台能打开但浏览器提示证书错误;FTP 客户端勾选 FTPS 后登录失败,或者登录成功后在切换数据连接时断开。原因可能是证书没有绑定到 FTP 服务、证书链不完整、客户端只支持某种 TLS 版本,或者域设置里开了“要求 TLS”但客户端没开。Serv-U 14.0 白金版支持 TLS 相关配置,但老版本和新客户端之间偶尔会有兼容差异。
解决:测试环境先用普通 FTP 把用户、目录、被动模式跑通,再开 FTPS。正式环境换受信任证书,确认证书包含正确的主机名,客户端用显式 FTPS 而不是隐式 FTPS 时要和域设置匹配。排查时看 Serv-U 日志里的 TLS 握手记录,客户端侧换一个客户端对比,排除单一客户端问题。如果业务不强制加密,可以先不开“要求 TLS”,但外部文件交换建议开,具体看合规要求。
# 查看本机证书存储里是否有对应主机名的证书 Get-ChildItem Cert:\LocalMachine\My | Select-Object Subject, NotBefore, NotAfter, Thumbprint # 查看 Serv-U 日志里最近的 TLS/SSL 相关记录,路径按实际替换 Get-ChildItem "D:\Serv-U\Logs" -File | Sort-Object LastWriteTime -Descending | Select-Object -First 3 FullNameCert:\LocalMachine\My是本机个人证书存储,Subject里看主机名,NotAfter看到期时间。日志路径以实际安装为准,不要照抄。证书问题不要一上来就重装 Serv-U,先确认证书绑定和客户端设置,很多“登录后断开”其实是数据连接 TLS 协商失败。把普通 FTP 和 FTPS 分开测,能快速定位是网络问题还是加密配置问题。
6. 装完怎么验证跑通:用 ftp.exe、被动端口和日志做闭环
装完 Serv-U 14.0 白金版,我习惯把验收分成三条:控制连接能登录、数据连接能列目录、读写能落盘。三条都过,才算这套环境能交付。先在本机用ftp.exe跑一遍,再从另一个网段的客户端跑一遍,最后看日志有没有报错。命令行测试比图形客户端更容易看清卡在哪一步,尤其是被动模式协商。
@echo off :: 先写一个临时 FTP 脚本,测试登录、被动模式、列目录和上传 ( echo user ftpuser ftpPass123 echo binary echo passive echo ls echo put D:\temp\test.txt upload-test.txt echo bye ) > %TEMP%\servu_ftp_test.txt :: -n 表示不自动登录,-s 指定脚本文件,-d 打开调试输出 ftp -n -d -s:%TEMP%\servu_ftp_test.txt 192.168.10.20这段脚本里user后面跟测试账号和密码,测试完记得删掉临时文件或改密码;binary用二进制模式传文件,避免文本模式改行符;passive切被动模式;ls验证数据连接能列目录;put验证写权限。ftp -d会打印协商过程,看到227 Entering Passive Mode后如果卡住,基本就是被动端口或 NAT 问题。测试账号不要用管理员账号,专门建一个只有测试目录权限的账号。
再用表格把验收项固定下来,交付时逐项打勾:
| 验收项 | 命令或操作 | 通过标准 |
|---|---|---|
| 控制连接 | Test-NetConnection -Port 21 | TcpTestSucceeded 为 True |
| 登录 | ftp输入测试账号 | 返回 230 登录成功 |
| 被动模式 | 客户端执行ls | 能列出目录,不超时 |
| 上传 | put一个小文件 | 文件出现在目标目录,大小一致 |
| 下载 | get刚上传的文件 | 本地文件内容一致 |
| 日志 | 查看D:\Serv-U\Logs | 有对应登录、传输记录 |
| 权限 | 只读账号尝试上传 | 应被拒绝,不能写 |
最后看日志,不要只看客户端提示。Serv-U 日志里能看到登录账号、来源 IP、命令、数据端口和错误码。如果客户端说成功但日志没有记录,可能连到了别的 FTP 服务;如果日志有 550,回看 NTFS 和目录规则;如果日志有数据连接超时,回看被动端口和 NAT。验收完成后把测试账号停用或删掉,把防火墙规则、被动端口范围、日志路径、授权到期时间写进交付单。从那以后我每次装完 Serv-U 14.0,都强制用另一个网段的客户端跑一遍被动模式上传下载,再把日志和端口写进交付单;安装包和授权文件按项目资料目录里的说明取用,先校验再装。希望帮到你。
本文还有配套的精品资源,点击获取