轉至;https://www.jb51.net/article/122171.htmphp
公司不少資料須要經過ftp上傳,那麼就須要配置一個FTP服務器,找了一臺Windows服務器搗鼓,開始按網上教程本身配置特別麻煩,何西西說用Filezilla比較方便,就去Filezilla官網下載了Filezilla Server,原本覺得會很輕鬆搞定,沒想到仍是碰到一堆坑,記錄下來方便之後查閱。服務器
服務器:Windows Web Server 2008 R2,64位加密
坑1:安裝Filezilla Server報錯 "could not load TLS network. Aborting start of administration interface".net
緣由:根據這個Filezilla Forums裏這個帖子https://forum.filezilla-project.org/viewtopic.php?t=39838討論的,服務器沒裝補丁KB2533623。htm
出坑:去微軟官網下載補丁,根據本身服務器型號選,我選了Update for Windows Server 2008 R2 x64 Edition (KB2533623),補丁裝好之後安裝Server再也不報錯。blog
坑2:打開Filezilla之後面板裏紅字顯示"FTP over TLS is not enabled, users cannot securely"教程
緣由:未啓用TLS模式。get
出坑:it
打開Settings
選FTP over TLS settings,勾選Enable FTP over TLS support,而後點擊中間Generate new certificate...按鈕
空白處均可以隨便填,注意Common name (Server address)那裏填127.0.0.1就好了,下面給密鑰和證書選一個保存的位置,而後點最下方Generate certificate
而後在Key password填個密鑰密碼,隨便填一個用不到的,最後點擊左下OK,再打開Filezilla就不會有錯誤提示啦~~
上面兩個坑解決之後,就能夠按照網上各類教程添加用戶,分配文件夾訪問權限了,基本配置參考《FileZilla怎麼用 FileZilla配置FTP服務圖文詳解》,Settings裏每一項的具體做用參考《免費ftp服務器FileZilla Server配置》,大部分都默認設置就好了。
坑3:服務器本地能夠訪問FTP,其餘機器訪問連輸用戶名和密碼的界面都彈不出
緣由:防火牆封住了服務器上FTP的入站端口,這種狀況下Filezilla裏連有人請求鏈接的信息都看不到。
出坑:
打開「高級安全Windows防火牆」
右擊「入站規則」,點擊「新建規則」
選擇「端口」,選擇「TCP」,輸入FTP端口,若是以前配置Filezilla時沒有改過,就用默認端口21
後面就選「容許連接」,全部時候都應用該規則,最後給這條規則命名如FTP Default Port,再用其餘機器訪問FTP就能彈出輸入用戶名和密碼的窗口了,Filezilla裏也能看到鏈接的信息啦~
坑4:服務器本地能夠訪問FTP,其餘機器輸入用戶名和密碼後提示「打開ftp服務器上的文件夾時發生錯誤,請檢查是否有權限」
緣由:這個坑博主把上面那條提示放到百度裏,也沒搜到什麼靠譜的解決辦法,而後想着裝一個Filezilla Client,用Client訪問FTP是否是能看到什麼錯誤代碼,果真找到了錯誤 代碼"425 Can't open data connection.",從stackoverflow上搜到這個解決辦法《Setup FileZilla Server Passive Ports on Windows Server 2012》。大概是說FTP的客戶端默認以Passive mode(被動模式,博文最後解釋了FTP的主動模式和被動模式)鏈接服務器,Filezilla會隨機打開1-65535之間的一個端口,致使這個錯誤的緣由就是,防火牆封住了Passive mode的端口。
出坑:
在Passive mode settings裏勾選Use custom port range,若是讓防火牆對1-65535端口所有開放有些危險,因此先在這裏限定好端口範圍
而後重複坑3在入站規則裏打開21端口的過程,打開限定好的Passive mode端口範圍,惟一的不一樣就是在下面這裏輸入50100-51100,給這條規則命名如FileZilla - Passive FTP Ports,再用其餘機器訪問就沒有任何阻礙啦~
至此,Filezilla配置過程當中的全部坑都跳出來了,這裏再補充兩個小知識和一個小技巧:
1. 防火牆的入站規則和出站規則
下面是從網上copy下來的一段解釋,對於FTP服務器來講,只涉及外網訪問服務器,不涉及服務器訪問外網,因此上面坑3和坑4都是在防火牆的入站規則裏打開端口,沒有修改出站規則。
出站就是你訪問外網,入站就是外網訪問你,用戶能夠建立入站和出站規則,從而阻擋或者容許特定程序或者端口進行鏈接。用戶可使用預先設置的規則,也能夠建立自定義規則,能夠將規則應用於一組程序、端口或者服務,也可 以將規則應用於全部程序或者某個特定程序;能夠阻擋某個軟件進行全部鏈接、容許全部鏈接,或者只容許安全鏈接,並要求使用加密來保護經過該鏈接發送的數據 的安全性;能夠爲入站和出站流量配置源IP地址及目的地IP地址,一樣還能夠爲源TCP和UDP端口及目的地TCP和UPD端口配置規則。
2.FTP的主動模式和被動模式
FTP鏈接包括兩類通道:一個控制鏈接(命令聯繫通道),幾個數據鏈接(資料聯繫通道)。前者用於傳遞客戶端的命令和服務器端對命令的響應,默認使用服務器的21端口,生存期是整個FTP會話時間。後者用於傳輸文件和其它數據,如目錄列表等,只在須要數據傳輸時創建,而一旦數據傳輸完畢就關閉,每次使用的端口也不必定相同,根據數據鏈接是否由服務器發起,能夠分爲主動模式和被動模式。
《關於ftp的主動模式(Active Mode)和被動模式(Passive Mode)》裏解釋得比較清楚,FTP協議是創建在TCP協議基礎上的,因此客戶端與服務器的每次交互都要通過三次握手,經過兩張圖能夠區分這兩種模式:
主動模式:客戶端端利用>1024的任意端口發起與服務器21端口創建鏈接,創建「命令聯繫通道」,若是要發生資料傳輸,經過21告知服務器端口(如1333)並 開始listen,服務器利用20端口向客戶端的1333端口發起鏈接,創建「資料聯繫通道」。因爲「資料聯繫通道」是由服務器主動創建的(圖中步驟6),因此稱做主動模式。
被動模式:創建「命令聯繫通道」的方式和主動模式基本同樣,也是鏈接先鏈接服務器的21端口。可是若是須要傳輸資料,客戶端會送出PASV指令,告訴服務器要利用被動模式創建「資料聯繫通道」,而後服務器會打開一個端口並開始listen,並把這個端口經過「命令聯繫通道」告知客戶端,客戶端再打開一個端口,與服務器創建「資料鏈接通道」。因爲「資料鏈接通道」是由服務器被動創建的,因此稱做被動模式。
3.取消FTP的自動登陸
有時候咱們訪問某個FTP時可能設置了保存密碼,以後每次訪問那個FTP,都會默認經過以前的用戶名和密碼登陸。爲了安全起見不讓它再自動登陸,或者FTP設置了不一樣權限的用戶,咱們想經過其餘用戶名登陸,能夠在已進入的目錄空白處右擊,選擇「登陸」,彈出的窗口裏把「保存密碼」選項取消掉就能夠了,在這個窗口裏也能夠輸入其餘用戶名及密碼,就是經過其餘身份訪問FTP了。