Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Win7 FTP 指令 dir/ls 無法顯示檔案清單?防火牆阻擋資料連線埠完整解決

編輯:Win7 常見問題解答

Win7 內建 ftp.exe 連線伺服器後,dir 或 ls 無法顯示檔案清單(卡住/逾時),但 IE 瀏覽 ftp:// 正常。主因:Windows 防火牆預設阻擋 FTP 主動模式資料連線埠(伺服器主動連回客戶端隨機高埠)。

解決方案比較

方案指令/操作優點缺點
關閉防火牆控制台 → 防火牆 → 關閉最簡單安全性極差,不建議
入站規則允許 ftp.exe進階設定 → 入站規則 → 新增規則 → 程式 ftp.exe → 允許精準放行需手動設定
netsh 指令允許 ftp.exe + 停用 Stateful FTP 過濾見下方指令可腳本化、部署快需管理員權限

推薦方案:netsh 兩條指令一鍵搞定

以系統管理員身分開啟命令提示字元執行:

netsh advfirewall firewall add rule name="FTP Client (non-SSL)" program="%systemroot%\system32\ftp.exe" action=allow protocol=TCP dir=in
netsh advfirewall set global StatefulFtp disable

指令解析

  • 第 1 條:為 ftp.exe 建立入站允許規則,放行 FTP 指令通道(埠 21)回應封包。
  • 第 2 條:關鍵 — 停用 Stateful FTP 過濾。Win7 防火牆預設啟用 FTP 狀態檢查,會動態開放資料埠,但對主動模式判斷有誤,導致資料連線被阻擋。停用後改由應用程式/使用者自行管理埠口。

為何指定 program 而非 localport=21?

實測 ftp.exe 主動模式資料連線使用的本地埠非固定 21,而是隨機高埠(如 50000+)。tasklist 找 PID → netstat -ano 確認連線埠,證實非 21。故指定程式路徑而非埠號才能精準放行。

tasklist 找 ftp PID
netstat 確認連線埠

其他常見誤區

  • service=ftpsvc 僅適用於 IIS FTP 服務,不適用客戶端 ftp.exe。
  • StatefulFtp enable 會加劇問題,必須 disable。
  • 被動模式 (quote PASV) 可繞過此問題,但非所有伺服器支援。

驗證成功

重新執行 ftp → open → dir 應即時顯示檔案清單,不再卡住。

兩條 netsh 指令精準解決 Win7 FTP 客戶端資料連線被防火牆阻擋,可納入部署腳本自動化配置。

Copyright © Windows教程網 All Rights Reserved