FTP工作原理及搭建實操

文章目錄

  • 前言
  • 一、FTP概述
  • 二、FTP工作原理
    • 2.1 FTP的作用與模式
    • 2.2 FTP工作流程
      • 2.2.1 主動模式(PORT模式)
      • 2.2.2 被動模式(PASV模式)
      • 2.2.3 對比表格
      • 2.2.4 如何選擇?
      • 2.2.5 補充:現代FTP服務器的常見做法
  • 三、FTP服務搭建與配置
    • 3.1 安裝前準備
      • 3.1.1 關閉防火墻與SELinux
      • 3.1.2 安裝VSFTPD
      • 3.1.3 備份配置文件
    • 3.2 匿名用戶配置
      • 3.2.1 修改配置文件
      • 3.2.2 設置目錄權限
      • 3.2.3 匿名訪問測試
    • 3.3 本地用戶配置
      • 3.3.1 修改配置文件
      • 3.3.2 用戶登錄測試
        • 3.3.2.1 測試上傳下載
      • 3.3.3 修改默認根目錄
        • 3.3.4 用戶列表控制
  • 四、總結


前言

FTP(File Transfer Protocol)作為經典的文件傳輸協議,至今仍在許多場景中發揮著重要作用。無論是網站維護、數據備份還是內部文件共享,FTP都因其簡單、穩定而備受青睞。本文基于教學實踐,系統梳理了FTP的基本概念、工作原理、服務搭建與配置方法,旨在幫助讀者快速掌握FTP服務的核心知識與實操技能。


一、FTP概述

FTP(File Transfer Protocol,文件傳輸協議)是一種典型的C/S架構的應用層協議,通過服務端和客戶端軟件共同實現文件傳輸功能。FTP使用TCP協議,端口20和21,確保連接可靠且面向連接。

  • 21端口:用于傳輸控制指令。
  • 20端口:用于傳輸數據。

FTP支持兩種傳輸模式:

  • 主動模式(Standard/Active):客戶端發送PORT命令,服務器主動連接客戶端進行數據傳輸。
  • 被動模式(Passive/PASV):客戶端發送PASV命令,服務器開放隨機端口等待客戶端連接。

二、FTP工作原理

2.1 FTP的作用與模式

FTP用于在Internet上傳送文件,常見服務端軟件包括:

  • Windows:Serv-U、FileZilla Server
  • Linux:VSFTP(Very Secure FTP)、ProFTPD

FTP使用TCP協議的20和21端口進行通信:

  • 20端口用于數據傳輸;
  • 21端口用于控制命令傳輸。

2.2 FTP工作流程

FTP會話包含兩個通道:控制通道和數據傳輸通道。

2.2.1 主動模式(PORT模式)

  • 控制連接:由客戶端(Client)向服務器的21端口發起。
  • 數據連接:由服務器(Server)向客戶端的指定端口發起。
    • 客戶端連接到服務器的21端口,發送用戶名和密碼;
    • 客戶端開放一個隨機高位端口(1024以上),并通過PORT命令告知服務器;
    • 服務器使用20端口主動連接客戶端的指定端口進行數據傳輸。
  • 優點

    • 對服務器網絡環境要求低:服務器只需要開放21(控制)和20(數據)端口即可正常工作。客戶端負責接收來自外部的連接,這在純服務器內網環境中是優點。
  • 缺點

    • 客戶端防火墻/NAT不友好:這是最大的缺點。在現代網絡環境中,客戶端通常位于防火墻或NAT路由器之后。
      • 問題:當服務器(外網)嘗試主動連接到客戶端告知的那個內部隨機端口(1025)時,客戶端的防火墻會認為這是一個未經請求的入站連接,從而將其阻斷,導致連接失敗。
      • 現象:客戶端能列出目錄(LIST 命令使用控制連接),但無法傳輸數據(RETRSTOR 命令需要數據連接)。
    • 安全性較差:服務器需要主動向外連接,從安全策略上講,這意味著服務器需要信任客戶端,增加了潛在的攻擊面。

2.2.2 被動模式(PASV模式)

  • 控制連接:由客戶端向服務器的21端口發起(與主動模式相同)。

  • 數據連接:由客戶端向服務器的一個隨機端口發起。

  • 工作過程

    • 客戶端連接到服務器的21端口,發送用戶名和密碼;
    • 客戶端發送PASV命令;
    • 服務器開放一個隨機高位端口(1024以上)并告知客戶端;
    • 客戶端連接該端口進行數據傳輸。
  • 優點

    • 對客戶端防火墻/NAT友好:這是被動模式成為現代默認選擇的主要原因。連接建立的方向與HTTP等普通網絡請求一致,都是客戶端主動“出站”連接。客戶端的防火墻只會檢查出站連接,通常都會放行,因此成功率高。
    • 客戶端安全性更好:客戶端不再需要開放大量隨機端口來接收外部入站連接,減少了暴露給外部的風險。
  • 缺點

    • 服務器防火墻/NAT配置復雜

      • 問題:服務器需要在防火墻上開放一個范圍的高位隨機端口(例如 30000-35000),而不僅僅是一個20端口,并將這些端口轉發到FTP服務器上。這增加了服務器端的維護復雜度和安全風險(開放端口范圍越大,潛在風險越高)。
      • 現象:服務器能正常接受控制連接,但在建立數據連接時失敗。
    • 對服務器端網絡環境要求高:如果服務器位于NAT網關后面,配置會非常麻煩,需要將控制端口和數據端口范圍都正確地進行NAT映射。

注:主動與被動是相對于服務器而言的。服務器主動連接客戶端為主動模式,客戶端連接服務器為被動模式。

2.2.3 對比表格

特性主動模式 (Active)被動模式 (Passive)
數據連接發起方服務器客戶端
服務器端口控制:21, 數據:20控制:21,數據:一個隨機高位端口
客戶端端口控制:隨機 -> 21,數據:隨機 <- 20控制:隨機 -> 21,數據:隨機 -> 服務器隨機端口
防火墻友好性對客戶端防火墻極不友好對客戶端防火墻非常友好
適用場景客戶端沒有防火墻(如機房內部網絡)現代通用場景(客戶端在NAT/防火墻后,如家庭/公司網絡)
服務器配置簡單(只需開放20、21端口)復雜(需開放21端口+一個隨機端口范圍)
安全性較差(服務器需主動向外連接)較好(連接方向符合常規出站請求)

2.2.4 如何選擇?

  • 絕大多數情況下,應使用被動模式(PASV)。因為現在的用戶幾乎都處于路由器(NAT)和防火墻的保護之下,被動模式是保證FTP可用的唯一選擇。
  • 只有在你知道客戶端網絡環境非常開放(沒有防火墻)且追求服務器簡單配置時,才考慮使用主動模式。例如,在兩個內部服務器之間進行數據傳輸。

2.2.5 補充:現代FTP服務器的常見做法

為了解決被動模式的服務器端防火墻問題,現代FTP服務器軟件(如 vsftpd, FileZilla Server)通常提供以下配置選項:

  • 指定被動模式端口范圍:在服務器配置中限定一個較小的端口范圍(如 50000-55000),然后在服務器的防火墻中只開放這個特定的端口范圍。
  • 被動模式外部IP地址:如果服務器 behind NAT,需要設置 pasv_address 為服務器的公網IP地址,這樣客戶端才能連接到正確的地址。

三、FTP服務搭建與配置

3.1 安裝前準備

3.1.1 關閉防火墻與SELinux

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

3.1.2 安裝VSFTPD

yum install -y vsftpd
systemctl start vsftpd
systemctl enable vsftpd

3.1.3 備份配置文件

cd /etc/vsftpd/
cp vsftpd.conf vsftpd.conf.bak

3.2 匿名用戶配置

3.2.1 修改配置文件

編輯 /etc/vsftpd/vsftpd.conf

anonymous_enable=YES #開啟匿名用戶訪問。默認已開啟
write_enable=YES #開放服務器的寫權限(若要上傳,必須開啟)。默認已開啟
anon_umask=022 #設置匿名用戶所上傳數據的權限掩碼(反掩碼)。 022--》755
anon_upload_enable=YES #允許匿名用戶.上傳文件。默認已注釋,需取消注釋
anon_mkdir_write_enable=YES #允許匿名用戶創建(上傳)目錄。默認已注釋,需取消注釋
anon_other_write_enable=YES #允許刪除、重命名、覆蓋等操作。需添加

3.2.2 設置目錄權限

chmod 777 /var/ftp/pub/

3.2.3 匿名訪問測試

在Windows命令行中:

ftp 192.168.10.120 #ip為服務端ip
用戶名:ftp
密碼:(直接回車)

在Windows的傳輸過程中需要先進入pub目錄,否則會因為沒有權限而無法上傳下載。


3.3 本地用戶配置

3.3.1 修改配置文件

編輯 /etc/vsftpd/vsftpd.conf

local_enable=YES
anonymous_enable=NO
write_enable=YES
local_umask=077
chroot_local_user=YES
allow_writeable_chroot=YES

在這里插入圖片描述

注釋以下行(若存在):

# anon_mkdir_write_enable=YES
# anon_other_write_enable=YES

重啟服務:

systemctl restart vsftpd

3.3.2 用戶登錄測試

ftp 192.168.10.12
用戶名:zhangsan
密碼:(輸入對應密碼)

或使用瀏覽器訪問:

ftp://zhangsan@192.168.10.120

在這里插入圖片描述

3.3.2.1 測試上傳下載
ftp> pwd          #匿名訪問ftp的根目錄為Linux系統的/var/ftp/目錄
ftp> ls           #查看當前目錄
ftp> cd pub       #需要進去才能有效,因為僅設置了/var/ftp/pub目錄的777權限
ftp> get文件名    #下載文件到當前Windows本地目錄
ftp> put 文件名   #上傳文件到ftp目錄
ftp> quit         #退出

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

3.3.3 修改默認根目錄

anon_root=/var/www/html    # 匿名用戶根目錄
local_root=/var/www/html   # 本地用戶根目錄
3.3.4 用戶列表控制

編輯 /etc/vsftpd/user_list,添加用戶:

zhangsan

在這里插入圖片描述

編輯 vsftpd.conf

userlist_enable=YES
userlist_deny=NO    # 設置為白名單模式

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述


四、總結

FTP作為一種經典的文件傳輸協議,在內部網絡和特定場景中仍有廣泛應用。通過本文的介紹,我們可以了解到:

  • FTP的兩種工作模式(主動/被動)及其區別;
  • VSFTPD的安裝與基本配置方法;
  • 如何配置匿名訪問和本地用戶訪問;
  • 如何通過用戶列表實現黑白名單控制。

掌握FTP服務的搭建與配置,不僅有助于理解傳統網絡服務的運作方式,也能為實際工作中的文件傳輸需求提供可靠解決方案。盡管如今SFTP、HTTP等方式逐漸普及,FTP仍在某些環境中保持著不可替代的地位。
最后,希望大家多多實踐,夯實基礎,聚沙成塔,與君共勉之!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/919693.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919693.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919693.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

setup 語法糖核心要點

1. 基本語法<!-- 傳統寫法 --> <script lang"ts"> export default {setup() {let name 張三function changeName() { name 李四 }return { name, changeName }} } </script><!-- 語法糖寫法 --> <script setup lang"ts"> …

C++---多態(一個接口多種實現)

C的多態&#xff08;Polymorphism&#xff09;是面向對象編程&#xff08;OOP&#xff09;的三大核心特性之一&#xff08;另外兩個是封裝和繼承&#xff09;&#xff0c;其核心思想是一個接口&#xff0c;多種實現&#xff0c;即同一操作作用于不同對象時&#xff0c;可產生不…

【機器學習深度學習】vLLM的核心優化技術詳解

目錄 前言 一、vLLM簡介&#xff1a;為什么它如此重要&#xff1f; 二、核心技術一&#xff1a;PagedAttention — 顯存管理的革命 2.1 傳統注意力緩存的缺陷 2.2 分頁式存儲管理 三、核心技術二&#xff1a;張量并行 — 多GPU推理的基石 3.1 什么是張量并行&#xff1f…

MySQL 高級主題:索引優化、ORM 與數據庫遷移

第五部分&#xff1a;索引優化1. 為什么需要索引&#xff1f;索引是提高數據庫查詢性能的關鍵數據結構&#xff0c;它類似于書籍的目錄&#xff0c;可以幫助數據庫快速定位到所需數據&#xff0c;而不必掃描整個表。2. 索引類型主鍵索引 (PRIMARY KEY): 唯一且非空&#xff0c;…

Eplan教程:網絡與PLC

歡迎大家來到“Eplan帶你做項目”第六個過程。在第五個過程中&#xff0c;Eplan基于實際項目的繪制&#xff08;電氣設計中的電源回路以及電源分配相關回路&#xff09;重點分享分了“電機的供電和控制圖紙的繪制”。本文中&#xff0c;先猜個問題&#xff0c;設計一個PLC系統&…

大模型落地全攻略:從技術實現到場景應用

大語言模型&#xff08;LLM&#xff09;的快速發展正在重塑各行各業的智能化進程&#xff0c;但其落地應用仍面臨技術適配、場景融合、成本控制等多重挑戰。本文將系統解析大模型落地的四大核心方向 ——微調技術、提示詞工程、多模態應用和企業級解決方案&#xff0c;通過代碼…

【論文】Zotero文獻管理

Zotero文獻管理 寫論文前查找閱讀大量文獻&#xff0c;寫論文時引用文獻&#xff0c;都是一件非常麻煩的事情&#xff0c;一款合適的文獻管理工具可以幫助我們更快捷地完成這些任務。zotero作為一款免費開源的工具&#xff0c;可以實現文獻閱讀、同步管理以及引用管理。 安裝…

MsSQL 函數,實現數字轉換成人民幣大寫

MsSQL 函數&#xff0c;實現數字轉換成人民幣大寫-- 如果函數已存在則刪除 IF OBJECT_ID(dbo.ConvertToRMBChineseNew, FN) IS NOT NULLDROP FUNCTION dbo.ConvertToRMBChineseNew GOCREATE FUNCTION dbo.ConvertToRMBChineseNew (NumberInput SQL_VARIANT -- 使用 SQL_VARIANT…

OpenHarmony深度定制:從系統到模塊的全景剖析與自定義模塊實戰

摘要:OpenHarmony 作為面向萬物互聯時代的開源操作系統,其“系統-子系統-部件-模塊”的四層架構設計,為開發者提供了高度可裁剪、可擴展的能力。本文將系統梳理這四層結構的職責邊界與協作關系,并手把手演示如何向 OpenHarmony 新增一個可交付的自定義模塊(Module),幫助…

數字社會學是干什么的?數字社會學理論與數字社會學家唐興通講數字社會學書籍有哪些?AI社會學人工智能社會學理論框架

在當今社會&#xff0c;傳統物理空間和人際關系網絡成為了許多年輕人尋找合適伴侶的重大障礙。以深圳為例&#xff0c;這座移民城市的大部分居民都來自外地&#xff0c;年輕人的人脈關系、尤其是親戚關系大多仍在家鄉。這使得深圳的單身男女在交友和婚戀方面的選擇面變得狹窄&a…

數據庫-MYSQL配置下載

目錄 一.數據庫概念 一、數據庫的基本定義 二、數據庫管理系統&#xff08;DBMS&#xff09; 三、數據庫系統&#xff08;DBS&#xff09; 四、數據模型 五、數據庫的特點 六、數據庫的應用領域 二.MySql 一、開源免費&#xff0c;降低中大型項目成本 二、跨平臺與兼容…

Java 中表示數據集的常用集合類

Java 中表示數據集的常用集合類 Java 集合框架提供了多種數據結構來表示和操作數據集&#xff0c;每種集合類都有其特定的用途和性能特征。以下是主要的集合類及其特點&#xff1a; 一、List 接口及其實現類 1. ArrayList 特點&#xff1a;基于動態數組實現優點&#xff1a;隨機…

Django REST框架核心:GenericAPIView詳解

Django REST framework (DRF) 中 GenericAPIView 的源碼核心部分。 它是所有“泛型視圖”的基礎類&#xff0c;比如常用的 ListAPIView、RetrieveAPIView、CreateAPIView 都是繼承自它。&#x1f31f; 作用繼承自 APIView&#xff0c;因此仍然是一個標準的 DRF 視圖。提供了常用…

深入解析HashMap的存儲機制:擾動函數、哈希計算與索引定位

今天復習了一下HashMap的部分&#xff0c;寫一篇博客記錄一下今天學習內容雖然之前學習過&#xff0c;但由于后來沒怎么使用過而且也沒復習基本忘得差不多了在Java的HashMap中&#xff0c;高效存儲鍵值對的核心在于哈希算法和索引定位。本文將結合源碼逐步拆解存儲流程&#xf…

【機器學習 / 深度學習】基礎教程

階段一&#xff1a;機器學習 / 深度學習基礎教程定位&#xff1a;針對準備進入 AI多智能體開發 的初學者&#xff0c;打牢機器學習與深度學習的基礎。一、為什么需要學習機器學習/深度學習 在進入智能體&#xff08;Agent&#xff09;開發之前&#xff0c;必須具備一定的 機器學…

ESP32應用——HTTP client(ESP-IDF框架)

目錄 一、前言 二、URL 2.1 URL簡介 2.2 URL示例 三、HTTP 3.1 HTTP協議概述 3.2 HTTP的工作原理 3.2.1 HTTP 請求-響應流程 3.2.2 HTTP 請求結構 3.2.3 HTTP請求方法 3.2.4 HTTP響應結構 3.2.5 HTTP狀態碼 四、ESP HTTP 客戶端流程 五、ESP HTTP 客戶端實戰解析…

動學學深度學習07-現代卷積神經網絡

動學學深度學習pytorch 參考地址&#xff1a;https://zh.d2l.ai/ 文章目錄動學學深度學習pytorch1-第07章-現代卷積神經網絡1. AlexNet1.1 AlexNet 的核心貢獻是什么&#xff1f;1.2 AlexNet 與 LeNet 的主要區別有哪些&#xff1f;1.3 為什么 AlexNet 需要 GPU 訓練&#xff1…

詳細講解Java中的反射和經典面試題(保姆級別)

1.1 反射的概述&#xff1a;專業的解釋&#xff08;了解一下&#xff09;&#xff1a;是在運行狀態中&#xff0c;對于任意一個類&#xff0c;都能夠知道這個類的所有屬性和方法&#xff1b;對于任意一個對象&#xff0c;都能夠調用它的任意屬性和方法&#xff1b;這種動態獲取…

MyCAT完整實驗報告

MyCAT完整實驗報告 ? 前言 剛剛看了一下前面的那篇MyCAT的文章 感覺有一些問題 所以拿出一篇文章再說一下 單獨構建了完整的實驗環境 這樣會全面一點 ? 安裝MyCAT #跳過? 主從配置 #不多追溯 因為我們選擇的主從 也可以做雙主機 但我們后邊再說? 環境搭建 一、環境規劃 服務…

機器翻譯論文閱讀方法:頂會(ACL、EMNLP)論文解析技巧

更多內容請見: 機器翻譯修煉-專欄介紹和目錄 文章目錄 一、論文選擇:快速判斷論文價值 1.1 關注核心會議與子領域 1.2 篩選標準 1.3 預讀篩選 1.4 快速定位關鍵信息 二、精讀解析 2.1 問題定義(5分鐘) 2.2 方法解剖(15分鐘) 2.3 實驗深挖(20分鐘) 2.4 批判性思考(10分…