吐槽 >> IIS10 搭建FTP 真是費了勁了
IIS服務器端
- 在 Windows 服務管理中開啓 FTP 功能,使 IIS 管理器可以對 FTP 相關服務進行管理。驗證成功的方式爲兩點
- servicecs.msc 中
Microsoft FTP Service
被開啓 - IIS管理器右鍵菜單已有
添加FTP站點
- 新建一個FTP站點,與新建網站操作類似
- FTP站點名稱指給要建立的ftp起的人性化名稱,用於標示其作用,如辦公用、共享用等;
- 物理路徑指該FTP站點頂級根目錄,需要一個物理目錄的映射,如 D:\ftp;
- IP地址默認無需改動,端口默認21,如有需要自行調整;
- SSL如無證書,選擇無SSL;
- 身份驗證新建時可將匿名與基本同時勾選;
- 允許訪問新建時可選擇所有用戶(調試便利);
-
調整FTP防火牆支持
選擇IIS中的服務器部分,右側打開FTP防火牆支持功能,修改數據通道端口範圍。端口21被用來傳輸FTP命令,需要額外指定一個數據傳輸端口,範圍推薦1024-65535。 -
爲FTP站點增加虛擬目錄
虛擬目錄管理起來即靈活,又不用暴露物理路徑,右鍵點擊FTP站點添加虛擬目錄,即可以在不改變本機真實目錄位置的情況下,使FTP可訪問到目錄和其內容。如虛擬目錄名稱爲a,映射本機真實地址是c:\project\a。
本機其它環境的配合
在添加FTP服務時,防火牆應該默認已經增加了以下規則
如自定義FTP的默認21端口,或使用中修改了數據傳輸端口,需重啓該FTP站點和servicecs.msc 中 Microsoft FTP Service
服務使其生效。
服務器環境的配合
使用雲服務器的話,還需要雲服務器的安全相關配置,也就是需要開放與FTP相關的端口,包括命令端口和數據端口。
實際效果與高級調整
剛纔按照默認操作,FTP站點應該已經可用了,瀏覽器或FTP工具中輸入地址 ftp://IP:21 即可查看,因爲開啓了匿名身份驗證,因此瀏覽器可以直接訪問資源,部分工具需要勾選匿名登錄即可。但通常不會允許匿名訪問或限制匿名,通常的做法是用賬號+密碼的方法允許指定的賬號來操作FTP。如果是獨立的FTP服務器會稍微“簡單”,因爲是軟件自己控制安全,所以在FTP服務器軟件中設定用戶、密碼等相關設置即可,如Serv-U、Filezilla Server等,但用IIS就會麻煩一些,因爲其依託於Windows安全機制。
- 爲使用FTP的對象建立系統用戶組,以便管理多個相關賬號(建立用戶組是非必須的,主要是爲了多用戶或用戶更改頻繁時操作更方便)。我的電腦-計算機管理-本地用戶和組-組中新建組,如ftpUser;
- 建立具體用戶,我的電腦-計算機管理-本地用戶和組-用戶中新建用戶,如ftp-a,設定其密碼及其它約束,並將其設置隸屬於ftpUser組;
- IIS選中該FTP站點(或站點下某目錄),打開FTP身份驗證,禁用匿名,打開FTP授權規則-添加允許規則-指定的角色或用戶組,填寫組名ftpUser,選擇權限並確定;
可能的坑
遇到了FileZilla訪問顯示列出目錄失敗和服務器發回了不可路由的地址,使用服務器地址代替兩種錯誤提示,而Xftp直接就是失敗。懷疑與IIS的數據端口未配置或配置後防火牆、雲安全等未開通有關,嘗試調整FTP客戶端軟件的工作主被動模式,以FileZilla爲例實際可以工作的站點配置如
- 協議選擇FTP(非SFTP);
- 主機即服務器IP,端口填寫實際端口號;
- 用戶名和密碼填寫上文所建立的FTP賬號信息;
- 傳輸模式選擇默認(即被動,實際切換到主動也可以工作);
FileZilla軟件設置調整 - 連接-FTP-傳輸模式選擇被動(推薦)並勾選失敗後允許退回到其它傳輸模式;
- 連接-FTP-主動模式-主動模式IP選擇向您的操作系統查詢外部IP地址;
- 連接-FTP-被動模式-被動模式選擇退回到主動模式(切換到使用服務器的外部IP地址來代替依舊成功)