一、FTP介紹
FTP協議定義:一個位於OSI七層結構中應用層的協議,中文名叫文件傳輸協議
(ftp是基於tcp/ip網絡傳輸協議的文件傳輸應用層協議)
FTP協議在兩台服務器中傳輸文件時,需要建立兩個通道,分別為:命令傳輸通道(control_socket)和數據連接通道(data_socket)。通常21端口是命令端口,20端口是數據端口。當混入主動/被動模式的概念時,數據端口就有可能不是20了
命令連接:control_socket 就是命令連接,負責傳輸一些命令到服務器,主要是不涉及數據交互的操作。比如登錄、更換目錄(本地已經活得得過目錄,本地沒有活得過需要通過數據連接先獲取目錄結構的數據)等
數據連接:data_socket則是數據連接,顧名思義就是與數據相關的操作,如上傳及下載等
FTP傳輸文件過程中分為客戶機和ftp服務器,在此過程中總是先建立起命令通道后在建立文件傳輸通道
二、FTP協議主要流程圖
三、主動模式與被動模式
對與主動、被動模式是針對服務器來說的。模式的選擇是根據客戶端通過control_socket發送PORT命令及PASV命令來決定的,服務器根據接收到的命令來決定自身的模式
數據連接是有方向的,數據傳輸是沒方向(連接是一個動作,傳輸是依仗着連接的橋梁)
主動模式PORT:
FTP客戶端從任意非特殊的端口N(N>1023)連入到FTP服務器的命令端口——21端口。客戶端在N+1(N+1>=1024)端口進行監聽,並且通過N+1(N+1>=1024)端口發送PROT N+1命令到服務器。服務器會通過本地FTP數據端口(通常為20)去連接客戶端指定的端口N+1,來進行數據傳輸
主動模式的FTP的 主要問題實際上落在客戶端。FTP 的客戶端並不會主動連接到服務器的數據端口,而是是告訴服務器它正在監聽哪個端口,然后服務器發起連接到客戶端上指定的端口。但是,這樣的連接有時候會被客戶端的防火牆阻止
主動方式FTP的主要問題實際上在於客戶端。FTP的客戶端並沒有實際建立一個到服務器數據端口的連接,它只是簡單的告訴服務器自己監聽的端口號,服務器再回來連接客戶端這個指定的端口。對於客戶端的防火牆來說,這是從外部系統建立到內部客戶端的連接,這是通常會被阻塞的。
被動模式pasv:
為了解決服務器主動發起到客戶端連接會被阻止的問題,另一種更完善的工作模式出現了,它就是 FTP 的被動模式,縮寫作 PASV,它工作的前提是客戶端明確告知 FTP 服務器它使用被動模式。
在被動模式的 FTP 中,客戶端啟動到服務器的兩個連接,解決了防火牆阻止從服務器到客戶端的傳入數據端口連接的問題。FTP 連接建立后,客戶端在本地打開兩個隨機的非系統端口 N 和 N + 1(N > 1023)。第一個端口連接服務器上的 21 端口,但是客戶端這次將會發出 PASV 命令,也就是告訴服務器自己處於被動模式。這樣服務器接到命令,隨后會打開一個隨機的非系統端口 P (P > 1023),並將 P 發送給客戶端作為 PASV 命令的響應。然后客戶端啟動從端口 N+1 到端口 P 的連接來傳輸數據。
(在vsftpd.com中指定被動端口范圍為4000-4500)
被動方式下,服務器端可以通過設置配置文件參數,達到控制N端口范圍,如下:
#liunx環境下設置 /etc/vsftpd/vsftpd.conf
pasv_enable=YES|NO
pasv_min_port=port number
pasv_max_port=port number
被動方式的FTP解決了客戶端的許多問題,但同時給服務器端帶來了更多的問題。最大的問題是需要允許從任意遠程終端到服務器高位端口的連接。幸運的是,許多FTP守護程序,包括流行的WU-FTPD允許管理員指定FTP服務器使用的端口范圍。
第二個問題是客戶端有的支持被動模式,有的不支持被動模式,必須考慮如何能支持這些客戶端,以及為他們提供解決辦法。例如,Solaris提供的FTP命令行工具就不支持被動模式,需要第三方的FTP客戶端,比如ncftp。
隨着WWW的廣泛流行,許多人習慣用web瀏覽器作為FTP客戶端。大多數瀏覽器只在訪問ftp://這樣的URL時才支持被動模式。這到底是好還是壞取決於服務器和防火牆的配置。
四、主動模式及被動模式的選擇
1、主動模式的實現與特點
當客戶端發出數據傳輸的指令之后(如上傳數據或者下載文件),客戶端會啟用另外一個端口監聽等待連接,並利用先前建立的命令連接通道告訴FTP服務器其監 聽的端口號。然后FTP服務器會利用端口20和剛才的FTP客戶端所告知的端口再次進行三方握手。三次握手成功后便建立了一條數據傳輸通道。注意此時數據 連結通道建立的過程中,是FTP服務器的20號端口主動連接FTP客戶端的,為此這種連接方式就叫做主動模式。
2、被動模式的實現與特點
被動操作模式在建立命令連接通道的時候,跟主動操作模式是相同的。兩者主要的差異就在於數據傳輸通道的建立上面。但是如果用戶需要進行數據傳輸的時候, 則FTP客戶端會通過命令通道告訴FTP服務器,如會向服務器發出一個PASV指令。這個指令就是告訴服務期,要采用被動模式建立連接。如果采用被動操作 模式,服務期會選擇自身的一個端口來進行監聽連接(而在主動操作模式下是利用客戶端的一個端口來進行監聽連接),並再次利用命令連接通道告訴客戶端“我為 你開啟了哪個端口,你要建立數據連接的話就跟我的哪個端口聯系”。客戶端在接到這個信息后,就會在自己操作系統上選擇一個數據連接的通信端口,與服務器提 供的端口進行三方握手,並最終建立起可以進行數據傳輸的通道。
可見,從技術上來說,主動模式與被動操作模式的主要差異就在於誰開啟一個端口來進行監聽連接,誰等待(提供端口)、誰主動。雖然在技術上的差異比較小,但是其在具體的應用上卻有很大的不同。
3、兩者該如何選擇?
當企業的網絡環境不同,兩個操作模式的應用效果是不同的。這主要是主動操作模式與被動操作模式在數據的傳輸通道建立上有一定的差異。從以上的分析中我們 可以看出,在主動操作模式下,FTP服務器的20號端口是主動同客戶端聯系,建立數據傳輸通道的。而在被動操作模式下,則FTP服務器是被動的等待,等待 客戶段與其的20號端口建立連接。不要小看這個細小的差異,這個差異卻決定了兩者應用環境的不同。
一般來說,如果這個FTP服務器只對企業的內部局域網客戶提供文件傳輸的服務,那么基本上兩者的應用效果沒有很大的差異。但是如果企業網絡外部的用戶也 需要通過互聯網與FTP服務器進行文件傳輸的話,就會有很大的不同。這主要是因為,在數據通道建立的過程中,客戶端會在另一個端口上監聽等待連接,並利用 命令連接通道告訴服務器其監聽的端口好。然后企業的邊界路由器會將FTP的IP地址轉換為合法的公網IP地址(假設企業由於公網IP地址有限,在邊界路由 器上通過NAT服務向外部用戶提供FTP連接)。如果此時采用的是自動操作模式的話,則在連接這個數據通道的過程中FTP服務器會主動跟邊界路由器的端口 進行通信(因為FTP服務器認為這台邊界路由器,其實就是NAT服務器,就是FTP客戶段)。但是實際上不是,而且也有可能沒有啟用這個端口。為此客戶端 與FTP服務器之間的連接最終沒有建立起來。所以說,如果采用主動操作模式的話,當FTP服務器部署在NAT等服務器后面的時候,則FTP服務器與客戶端 之間只能夠建立命令連接通道,而無法建立起數據傳輸通道。如果FTP服務器與客戶端之間還有防火牆的話,在連接的過程中也會出現以上類似的情況。
而如果是采用被動操作模式的話,是客戶端主動跟服務期的20號端口進行連接的。為此在數據傳輸通道建立的過程中,即使中間有NAT服務器或者防火牆,也 會准確無誤的連接到FTP服務器的數據傳輸接口。所以說,如果在客戶端與FTP服務器之間存在防火牆或者NAT服務器等類似設備的話,那么在FTP服務器 部署的時候,最好采用被動操作模式。否則的話,很可能只能夠建立命令連接通道,而無法進行數據傳輸。
在 FTP服務器部署的時候,其默認采用的是主動操作模式。如果企業FTP服務器的用戶都是在內部網絡中的,即不用像外部網絡的用戶提供FTP連接的需求,那 么采用這個默認操作方式就可以了。但是如果一些出差在外的員工或者員工在家庭辦公時也需要訪問企業內部的FTP服務器,而此時出於安全的考慮或者公網IP 地址數量的限制,企業往往會把FTP服務器部署在防火牆或者NAT服務器的后面,此時這個主動操作模式就不行了。如果企業中通過互聯網來訪問企業內部 FTP服務器的員工比較多的時候,那么最好能夠一勞永逸的解決這個問題,即在FTP服務器上進行設置,強制客戶端在連接的時候采用被動操作模式。相反如果 用戶比較少的話,而且用戶又具有一定的計算機知識,那么可以不在服務器上進行設置。而是在連接的過程中,通過FTP客戶端來設置。如在某些FTP客戶端 上,會有一個Passive Transfers等類似的選項。選中這個選項就表示以被動操作方式進行傳輸。而沒有選中這個選項的客戶端則仍然采用主動操作模式來進行連接。
總 之,在FTP服務器部署的時候考慮是要采用主動操作模式還是被動操作模式,只需要記住一個原則,即如果把FTP服務器部署在防火牆或者NAT服務器的背 后,則采用主動操作模式的客戶端只能夠建立命令連接而無法進行文件傳輸。如果部署完FTP服務器后,系統管理員發現用戶可以連接上FTP服務器,可以查看 目錄下的文件,但是卻無法下載或者上傳文件,如果排除權限方面的限制外,那么很有可能就是這個操作模式選擇錯誤。系統管理員告訴用戶選擇合適的操作模式, 基本上就可以解決文件傳輸的問題了。
五、FTP搭建
①window系統搭建
步驟一:添加IIS以及FTP服務角色
在創建FTP站點前,首先需要安裝IIS及FTP服務。
-
遠程連接Windows實例。具體操作,請參見 在本地客戶端上連接Windows實例 。
-
在底部任務欄,單擊 服務器管理器 圖標。
-
在頂部導航欄,單擊 管理 > 添加角色和功能 。
-
在彈出的對話框中,默認單擊 下一步 到 選擇服務器角色 界面。
-
選中 Web 服務器(IIS) ,在彈出的對話框中單擊 添加功能 ,然后單擊 下一步 。
-
在 選擇角色服務 界面。選中 IIS管理控制台 以及 FTP 服務器 ,單擊 下一步 。
-
單擊 安裝 。
步驟二:創建FTP用戶名及密碼
完成以下操作,創建Windows用戶名和密碼,用於FTP使用。如果您希望匿名用戶可以訪問,可省略此步驟。
-
在底部任務欄,單擊 開始 圖標。
-
單擊 管理工具 ,然后雙擊 計算機管理 。
-
在左側導航欄單擊 本地用戶和組 > 用戶 。
-
在中間空白處單擊鼠標右鍵,並選擇 新用戶 。
本示例中用戶名使用 ftptest 。
說明 密碼必須包括大寫字母、小寫字母和數字。否則會顯示無法通過密碼策略。
步驟三:設置共享文件的權限
您需要為在FTP站點共享給用戶的文件夾設置訪問和修改等權限。
-
在服務器磁盤上創建一個供FTP使用的文件夾。右鍵單擊文件夾,選擇 屬性 。
本示例中,在C盤下創建一個名為 ftp 的文件夾。
-
單擊 安全 頁簽,然后單擊 編輯 。
-
單擊 添加 。
-
在彈出的對話框中,輸入對象名稱 ftptest,然后單擊 確定 。
-
在 組或用戶名 區域,單擊剛剛添加的用戶名 ftptest ,然后根據需要,選擇 ftptest 的權限,並單擊 確定 。
步驟四:添加及設置FTP站點
安裝FTP,設置好共享文件夾權限后,您需要創建FTP站點。
-
在底部任務欄,單擊 服務器管理器 圖標。
-
在頂部導航欄,單擊 工具 > Internet Information Services(IIS)管理器 。
-
在左側導航欄右鍵單擊 網站 ,並單擊 添加FTP站點... 。
-
在彈出的對話框中,填寫 FTP站點名稱 與共享文件夾的 物理路徑 ,然后單擊 下一步 。
本示例中 FTP 站點名稱 設置為 ftptest , 物理路徑 請選擇在 步驟三:設置共享文件的權限 中創建的FTP文件夾路徑。
-
IP 地址 默認選擇 全部未分配 。端口號可自行設置,FTP默認端口號為 21 。
-
選擇SSL設置,然后單擊 下一步 。
- 允許 :允許FTP服務器支持與客戶端的非SSL和SSL連接。
- 需要 :需要對FTP服務器和客戶端之間的通信進行SSL加密。
- 無 :不需要SSL加密。
-
選擇要使用的一種或多種身份驗證方法。
- 匿名 :允許任何僅提供用戶名 anonymous 或 ftp 的用戶訪問內容。
- 基本 :需要用戶提供有效用戶名和密碼才能訪問內容。由於基本身份驗證通過網絡傳輸未加密的密碼,因此請僅在清楚客戶端和FTP服務器之間的連接是安全的情況下(例如,使用安全套接字層SSL時)使用此身份驗證方法。
-
從 允許訪問 列表中,選擇以下選項之一:
- 所有用戶 :所有用戶(不論是匿名用戶還是已標識的用戶)均可訪問相應內容。
- 匿名用戶 :匿名用戶可訪問相應內容。
- 指定角色或用戶組 :僅特定角色或用戶組的成員才能訪問相應內容。請在對應的文本框中輸入角色或用戶組。
- 指定用戶 :僅指定用戶才能訪問相應內容。請在對應的文本框中輸入用戶名。
-
選中經過授權的用戶的 讀取 和 寫入 權限。然后單擊 完成 。
步驟五:設置安全組及防火牆
-
搭建好FTP站點后,您需要在實例安全組的入方向添加規則,放行FTP服務器21端口及FTP服務器被動1024/65535端口。
-
可選:
服務器防火牆默認為關閉狀態。如果您的防火牆為開啟狀態,則需要放行TCP 21與1024/65535端口用於FTP服務。
具體操作,請參見 設置 ECS 實例遠程連接防火牆 。
其他防火牆設置請參見 微軟官方文檔 。
步驟六:客戶端測試
FTP工具、Windows命令行工具或瀏覽器均可用來測試FTP服務器。本教程以Google Chrome瀏覽器為例,介紹FTP服務器的訪問步驟。
-
打開客戶端的Google Chrome瀏覽器,訪問
ftp://實例公網IP地址:21
(如果不填端口則默認訪問21端口)。說明 使用瀏覽器訪問FTP服務器出錯時,建議您清除瀏覽器緩存后再嘗試。
-
在彈出的對話框中,輸入用戶名 ftptest 和對應的密碼,即可對FTP文件進行相應權限的操作。
瀏覽器中只能對文件進行讀取操作,因此建議您使用FTP工具進行操作,例如,FileZilla。
說明 此步驟僅適用於基本身份驗證,匿名用戶無需輸入用戶名和密碼即可登錄FTP服務器。
②FileZilla搭建FTP
Ⅰ、搭建過程
安裝和啟動軟件,點擊確定后進入界面
點擊下圖中的“用戶”頭像,新增用戶
設置用戶名為ftp
設置密碼
提示設置目錄
把E盤下的ftp文件夾設置為FTP目錄,依照下圖選中選項,按“確定”按鈕
查看服務器的IP地址,地址為:10.3.20.33
**
**
三、客戶端上的操作
**點擊菜單欄的“文件”--“站點管理器”
**
**
**
填寫服務器的IP地址、用戶名等信息
點擊連接后,提示連接成功,從左側拖到文件到右側,來上傳文件
上傳成功
Ⅱ搭建過程遇到的問題
-
問題:
You appear to be behind a NAT router. Please configure the passive mode settings and forward a range of ports in your router.
解決方法:
“Edit”-“Setting”或直接點擊設置按鈕(齒輪);
選擇“Passive mode settings”選項卡,勾選“Use the following IP:”並填寫服務器的IP地址,之后點擊“OK”保存;
接下來的提示信息中不再提示上述問題; -
問題:
響應: 425 Can't open data connection for transfer of "/"
配置過程中沒有設置“Use custom port range
”,那么在客戶端連接服務端讀取目錄時就會報此錯誤
這個問題主要是由於使用Passive Mode模式造成的。
解決方法:
在上面的設置窗口中要勾選該項,設置端口范圍,並在后面的防火牆設置中,將端口范圍加入到入站端口中。 -
警告:
Warning: FTP over TLS is not enabled, users cannot securely log in.
解決方法:啟用TLS傳輸,具體操作如下:
“Edit”-“Setting”或直接點擊設置按鈕(齒輪);
選擇“FTP over TLS settings”選項卡,點擊“Generate new certificate...”;
生成驗證時Key size”根據自己的喜好選擇即可,其他信息可以根據自己的情況隨意填寫,然后選擇保存地址(最好放到安裝路徑下) “;
其中的Common name(Server address)
是連接時使用的域名或IP,如我這里填寫pro.ftp.cool.com
,后面用客戶端連接時,主機(H)
就填寫pro.ftp.cool.com
。同時還需要將該域名解析到FTP服務器的外網IP。Key size
最好選擇4096bit
名稱默認為“certificate.crt”就好,最終選擇生成;
提示“Certificate generated successfully”則說明生成沒有問題,點擊“確定”關閉彈窗;
點擊“OK”保存設置;
之后的信息提示不再出現警告。 -
接下來就是創建“Group”,“Users”並設置“Shared folders”
不做詳細解說,只需注意:
- 添加用戶時為用戶分配組;
- 為用戶分配文件夾的權限,並指定Home文件夾(即“Set as home dir”,路徑前出現“H”即可),如下圖;
-
端口設置
默認端口:21,上面修改為14149
加密端口:990,上面修改為14148 自定義的端口范圍:14140-14149(根據自己的情況更改)
可以自行設置,但是需要注意的是無論使用什么端口,在后面一定要添加到防火牆的入站規則中去。
默認端口及加密端口可以自行更改。 -
在本地安裝客戶端
通過客戶端連接服務器就可以了。
初次連接時會提示如下,選擇信任,確定即可。
-
問題:Could not load certificate file: error:02001002:system library:fopen:No such file or directory (0)
1.查看存ssl證書的文件名稱是否存在中文。存在改為英文
③centos8.2搭建FTP服務器
Ⅰ、搭建ftp服務器,用filezille進行連接
1.運行以下命令安裝 vsftpd。
yum install -y vsftpd
2.運行以下命令打開及查看etc/vsftpd
cd /etc/vsftpd
ls
說明:
/etc/vsftpd/vsftpd.conf 是核心配置文件。
/etc/vsftpd/ftpusers 是黑名單文件,此文件里的用戶不允許訪問 FTP 服務器。
/etc/vsftpd/user_list 是白名單文件,是允許訪問 FTP 服務器的用戶列表。
/etc/vsftpd/vsftpd_conf_migrate.sh 是vsftpd操作的一些變量和設置
3.運行以下命令設置開機自啟動。
systemctl 啟用 vsftpd
4.運行以下命令啟動 FTP 服務。
systemctl 啟動 vsftpd
5.運行以下命令查看 FTP 服務端口。
netstat -antup | ftp文件
6.創建連接用戶和密碼,執行下面的命令
創建用戶:useradd ama 注:ama是用戶名
設計用戶密碼: passwd ama 注:給用戶ama設置密碼,設置的密碼必須是包含大小寫,數字,特殊字符,長度大於等於8
7.修改vsftp(/etc/vsftpd/vsftpd.conf)的配置文件
a.運行vim vsftpd.conf。
b.按鍵 “i” 進入編輯模式。
c.將是否允許匿名登錄 FTP 的參數修改為anonymous enable=NO。
d.將是否允許本地用戶登錄 FTP 的參數修改為local_enable=YES。
e.按鍵 “Esc” 退出編輯模式,然后按鍵“:wq” 保存並退出文件。
8.重啟服務,執行下面的命令:
systemctl 重啟 vsftpd
9.給服務器添加安全組(使用的是阿里雲服務器),如下圖顯示:
添加端口號21
10.使用filezille進行登陸
Ⅱ、centos8.2完整搭建FTP
-
遠程連接Linux實例。
遠程連接的具體操作,請參見連接方式介紹。
-
運行以下命令安裝vsftpd。
dnf install -y vsftpd
-
運行以下命令設置FTP服務開機自啟動。
systemctl enable vsftpd.service
-
運行以下命令啟動FTP服務。
systemctl start vsftpd.service
說明 執行該命令時如果提示錯誤信息Job for vsftpd.service failed because the control process exited with error code,請排查是否存在下述問題。如果問題仍未解決,建議提交工單。
- 網絡環境不支持IPv6時,運行命令vim /etc/vsftpd/vsftpd.conf將內容
listen_ipv6=YES
修改為listen_ipv6=NO
。 - MAC地址不匹配時,運行命令ifconfig查看MAC地址,並在/etc/sysconfig/network-scripts/ifcfg-xxx配置文件中新增或修改
HWADDR=<MAC地址>
。
- 網絡環境不支持IPv6時,運行命令vim /etc/vsftpd/vsftpd.conf將內容
-
運行以下命令查看FTP服務監聽的端口。
netstat -antup | grep ftp
出現如下圖所示界面,表示FTP服務已啟動,監聽的端口號為21。
此時,vsftpd默認已開啟本地用戶模式,您還需要繼續進行配置才能正常使用FTP服務。
步驟二:配置vsftpd
為保證數據安全,本文主要介紹被動模式下,使用本地用戶訪問FTP服務器的配置方法。
-
運行以下命令為FTP服務創建一個Linux用戶。本示例中,該用戶名為ftptest。
adduser ftptest
-
運行以下命令修改ftptest用戶的密碼。
passwd ftptest
運行命令后,根據命令行提示完成FTP用戶的密碼修改。
-
運行以下命令創建一個供FTP服務使用的文件目錄。
mkdir /var/ftp/test
-
運行以下命令,創建測試文件。
該測試文件用於FTP客戶端訪問FTP服務器時使用。
touch /var/ftp/test/testfile.txt
-
運行以下命令更改/var/ftp/test目錄的擁有者為ftptest。
chown -R ftptest:ftptest /var/ftp/test
-
修改vsftpd.conf配置文件。
-
運行以下命令,打開vsftpd的配置文件。
如果您在安裝vsftpd時,使用的是
apt install vsftpd
安裝命令,則配置文件路徑為/etc/vsftpd.conf。vim /etc/vsftpd/vsftpd.conf
-
按i進入編輯模式。
-
配置FTP服務器為被動模式。
具體的配置參數說明如下:
注意 修改和添加配置文件內的信息時,請注意格式問題。例如,添加多余的空格會造成無法重啟服務的結果。
#除下面提及的參數,其他參數保持默認值即可。 #修改下列參數的值: #禁止匿名登錄FTP服務器。 anonymous_enable=NO #允許本地用戶登錄FTP服務器。 local_enable=YES #監聽IPv4 sockets。 listen=YES #在行首添加#注釋掉以下參數: #關閉監聽IPv6 sockets。 #listen_ipv6=YES #在配置文件的末尾添加下列參數: #設置本地用戶登錄后所在目錄。 local_root=/var/ftp/test #全部用戶被限制在主目錄。 chroot_local_user=YES #啟用例外用戶名單。 chroot_list_enable=YES #指定例外用戶列表文件,列表中用戶不被鎖定在主目錄。 chroot_list_file=/etc/vsftpd/chroot_list #開啟被動模式。 pasv_enable=YES allow_writeable_chroot=YES #本教程中為Linux實例的公網IP。 pasv_address=<FTP服務器公網IP地址> #設置被動模式下,建立數據傳輸可使用的端口范圍的最小值。 #建議您把端口范圍設置在一段比較高的范圍內,例如50000~50010,有助於提高訪問FTP服務器的安全性。 pasv_min_port=<port number> #設置被動模式下,建立數據傳輸可使用的端口范圍的最大值。 pasv_max_port=<port number>
更多參數的詳細信息,請參見vsftp配置文件及參數說明。
-
按Esc退出編輯模式,然后輸入:wq並回車以保存並關閉文件。
-
-
創建chroot_list文件,並在文件中寫入例外用戶名單。
-
運行以下命令,創建chroot_list文件。
vim /etc/vsftpd/chroot_list
-
按i進入編輯模式。
-
輸入例外用戶名單。此名單中的用戶不會被鎖定在主目錄,可以訪問其他目錄。
-
按Esc退出編輯模式,然后輸入:wq並回車以保存並關閉文件。
注意 沒有例外用戶時,也必須創建chroot_list文件,內容可為空。
-
-
運行以下命令重啟vsftpd服務。
systemctl restart vsftpd.service
步驟三:設置安全組
搭建好FTP站點后,在實例安全組的入方向添加規則並放行下列FTP端口。具體操作,請參見添加安全組規則。
說明 大多數客戶端位於局域網中,IP地址是經過轉換的,因此ipconfig或ifconfig命令返回的IP不一定是客戶端的真實公網IP地址。若后續客戶端無法登錄FTP服務器,請重新確認其公網IP地址。
被動模式需開放21端口,以及配置文件/etc/vsftpd/vsftpd.conf中參數pasv_min_port和pasv_max_port之間的所有端口。配置詳情如下表所示。
規則方向 | 授權策略 | 協議類型 | 端口范圍 | 授權對象 |
---|---|---|---|---|
入方向 | 允許 | 自定義TCP | 21/21 | 所有要訪問FTP服務器的客戶端公網IP地址,多個地址之間用逗號隔開。允許所有客戶端訪問時,授權對象為0.0.0.0/0。 |
入方向 | 允許 | 自定義TCP | pasv_min_port/pasv_max_port。例如:50000/50010 | 所有要訪問FTP服務器的客戶端公網IP地址,多個地址之間用逗號隔開。允許所有客戶端訪問時,授權對象為0.0.0.0/0。 |
步驟四:客戶端測試
FTP客戶端、Windows命令行工具或瀏覽器均可用來測試FTP服務器。本文以Windows Server 2012 R2 64位系統的本地主機作為FTP客戶端,介紹FTP服務器的訪問步驟。
-
在本地主機,打開這台電腦。
-
在地址欄中輸入
ftp://<FTP服務器公網IP地址>:FTP端口
,本文中為Linux實例的公網IP地址。例如:ftp://121.43.XX.XX:21
-
在彈出的登錄身份對話框中,輸入已設置的FTP用戶名和密碼,然后單擊登錄。
vsftp配置文件及參數說明
/etc/vsftpd目錄下文件說明如下:
- /etc/vsftpd/vsftpd.conf是vsftpd的核心配置文件。
- /etc/vsftpd/ftpusers是黑名單文件,此文件中的用戶不允許訪問FTP服務器。
- /etc/vsftpd/user_list是白名單文件,此文件中的用戶允許訪問FTP服務器。
配置文件vsftpd.conf參數說明如下:
-
用戶登錄控制參數說明如下表所示。
參數 說明 anonymous_enable=YES 接受匿名用戶 no_anon_password=YES 匿名用戶login時不詢問口令 anon_root=(none) 匿名用戶主目錄 local_enable=YES 接受本地用戶 local_root=(none) 本地用戶主目錄 -
用戶權限控制參數說明如下表所示。
參數 說明 write_enable=YES 可以上傳文件(全局控制) local_umask=022 本地用戶上傳的文件權限 file_open_mode=0666 上傳文件的權限配合umask使用 anon_upload_enable=NO 匿名用戶可以上傳文件 anon_mkdir_write_enable=NO 匿名用戶可以建目錄 anon_other_write_enable=NO 匿名用戶修改刪除 chown_username=lightwiter 匿名上傳文件所屬用戶名
Ⅲ遇到問題:
1.問題:Linux服務器上訪問無報錯, 在win10下訪問出現錯誤:
解決方法:打開
點擊