一文詳解 FTP、FTPS 與 SFTP 的原理

無論是網盤還是雲端儲存,上傳都是一項很簡單的操作。那些便捷好用的上傳整理工具所用的 FTP 協議到底是什麼意義,繁雜的模式又有何區別?

二狗子最近搭建了一個圖片分享網站,每天都有好多人在他的網站上傳許多照片,這些照片還會透過內部的邏輯同步到又拍雲端儲存中,非常方便。

但不久後問題就來了,由於剛開始的使用者照片管理規劃沒有做好,隨著使用者上傳的圖片越來越多,雲端儲存的內容也越來越混亂,二狗子看著也非常難受。這不,趁著今天休息,二狗子決定好好的調整一番。

一文詳解 FTP、FTPS 與 SFTP 的原理

二狗子開啟又拍雲控制檯,上上下下找了一番沒有找到將對應檔案移動到對應目錄中的功能。向又拍雲客服尋求幫助後,客服薇薇告訴他,可以透過 FTP 工具來管理雲端儲存的檔案,同時還提供了一篇詳盡的幫助文件給二狗子 ——FTP 工具連線又拍雲端儲存文件[https://help。upyun。com/knowledge-base/developer_tools/] 。

二狗子終於透過 FTP 工具連線上了雲端儲存,一頓操作之後,二狗子成功把照片整理的整整齊齊。看著這個讓強迫症患者滿意舒適的儲存介面,又看了看能夠打造這個效果的 FTP 工具,二狗子滿意的點了點頭,決定一不做二不休徹徹底底的瞭解一下 FTP ,也看看 FTP 還有沒有其他的好用功能了。

FTP、FTPS 與 SFTP 簡介

FTP

在看相關功能之前,二狗子發現客戶端有三種不同的協議,分別是 FTP、FTPS 與 SFTP,為了弄清楚這是什麼,二狗子打開了萬能的百科。

首先來了解一下什麼是 FTP,維基百科說:FTP 即 檔案傳輸協議(英語:File Transfer Protocol 的縮寫)是一個用於計算機網路上在客戶端和伺服器之間進行檔案傳輸的應用層協議。完整的 FTP 是由 FTP 伺服器 和 FTP 客戶端組成的,客戶端可以將本地的檔案透過 FTP 協議上傳到伺服器,也可以將伺服器的檔案下載到本地。它是當今使用的最古老的檔案傳輸協議之一,是一種非常便捷的移動檔案的方式。

FTP 的工作原理

FTP 連線需要 FTP 伺服器和客戶端兩方在網路上建立通訊。建立 FTP 連線時會有兩個不同的通訊通道。一個被稱為命令通道,它的作用是發出和響應指令。另一個為資料通道,用於客戶端和伺服器端進行資料互動。

使用 FTP 傳輸檔案時,使用者需要透過向 FTP 伺服器提供憑據來獲得檔案傳輸許可。當然某些公共 FTP 伺服器可能不需要憑據即可訪問其檔案,但是無法保證資料傳輸的安全性,任何未加密公共網路上的資料傳送都是非常危險的,所以為了保護傳輸資料的安全,由 FTP 衍生而出的就是下面的兩種協議:FTPS 與 SFTP。

FTPS

接下來二狗子查詢了一下,發現 FPTS 有 FTPS 隱式 SSL 和 FTPS 顯示 SSL 兩種模式,兩者都是用 SSL 加密。那麼兩者有什麼區別呢?

FTPS 隱式 SSL:該模式通常在埠 990 上執行。在這個模式下全部資料的交換都需要在客戶端和伺服器之間建立 SSL 會話,並且伺服器會拒絕任何不使用 SSL 進行的連線嘗試。

FTPS 顯式 SSL:顯示 SSL 下伺服器可以同時支援 FTP 和 FTPS 會話。開始會話前客戶端需要先建立與 FTP 伺服器的未加密連線,並在傳送使用者憑證前先發送 AUTH TLS 或 AUTH SSL 命令來請求伺服器將命令通道切換到 SSL 加密通道,成功建立通道後再將使用者憑證傳送到 FTP 伺服器,從而保證在會話期間的任何命令都可以透過 SSL 通道自動加密。

二狗子來給大家簡單快速的總結一下。當啟用隱式模式時,FTP 的預設埠就被改為 TCP/990,伺服器自動建立安全連線,並且要求客戶端也必須支援安全連線模式也就是使用 SSL 進行連線。當啟用顯式模式時,與 FTP 連線方式和預設埠一樣,但是需要以命令 AUTH SSL/TLS 型別的命令進行啟用安全連線後才能正常傳輸資料。

SFTP

最後大家來一起看看 SFTP,SFTP 是 Secure File Transfer Protocol 的縮寫,也叫作安全檔案傳送協議。

如果說 FTPS 是在 FTP 協議上增加了一層 SSL ,那麼 SFTP 就是是基於網路協議SSH(安全外殼)的協議與前面所說的 FTP 完全不同。SFTP 不使用單獨的命令通道和資料通道,而是資料和命令都會透過單個連線以特殊格式的資料包進行傳輸。

SFTP 提供了兩種驗證連線的方法。

與 FTP 一樣,連線時只需要驗證使用者 ID 和密碼就可以了。但是,與FTP不同的是,這些憑據是加密的,這是 SFTP 最主要的安全優勢。

除密碼外,還可以透過 SSH 金鑰來驗證並透過 SFTP 協議連線。

瞭解了這幾個協議之後,二狗子使用 FTP 客戶端工具就更加順手了,他可以根據自己的需求更改協議以及加密方式,而不用為不懂某個設定而煩惱。

一文詳解 FTP、FTPS 與 SFTP 的原理

但是,新的疑問又出現了,二狗子看到這裡的傳輸設定中的傳輸模式,有主動和被動之分,這又是什麼意思呢。不懂就問的他又打開了 Google…

一文詳解 FTP、FTPS 與 SFTP 的原理

FTP 軟體的主動模式和被動模式的區別

主動模式

一般 FTP 的預設模式就是主動模式,也稱為 port 模式。

它是透過兩個步驟來進行工作的:

首先客戶端上的隨機埠與伺服器上的 FTP 埠 21 建立命令通道,客戶端傳送 PORT 命令,指定伺服器與客戶端其中一個埠連線,並建立資料通道。

然後伺服器從埠 20 連線到為資料通道指定的客戶端埠。建立連線後,即可透過這些客戶端和伺服器埠進行檔案傳輸。

被動模式

在傳輸方式欄,你還可以手動調整為被動傳輸模式,在該模式下使用者端進行檔案傳輸時,會先透過隨機埠 A 連線到伺服器上的埠 21,併發出 PASV 命令建立命令通道,告訴服務端這次是被動模式連線。之後伺服器會開啟一個隨機埠用於資料傳輸,而客戶端透過與發出命令的埠不同的隨機埠 B 建立資料通道,從而進行檔案傳輸。

一文詳解 FTP、FTPS 與 SFTP 的原理

被動模式與主動模式不同的地方就是客戶端啟動資料連線。在主動模式下,客戶端在命令通道上建立連線後,伺服器將啟動與客戶端的資料連線。而在被動模式下,建立命令通道後,由客戶端啟動與伺服器的資料連線。

因為這個區別,可以得出兩者的優勢和缺陷。比如主動模式有利於管理 FTP 服務端,因為只需要開啟 21 埠的“准入”、20 埠的“準出” 即可,但是由於伺服器連線到客戶端的埠隨機,所以客戶端有可能會觸發防火牆,甚至直接被防火牆攔截掉。反之被動模式則有利於管理客戶端。

沒想到一個看似簡單的儲存工具居然還有著這麼多的分類和區別,不同的模式不同的方式都可以對應不同的需求,看來以後在使用工具的時候還是可以多少了解一點相關知識,能讓工具用起來更順手更舒心~