FTP、SFTP、FTPS 差異與主機傳輸協定怎麼選

當你第一次要把佈景主題、外掛或修好的 wp-config.php 丟回主機,FileZilla 的連線設定畫面通常會先問你一個問題:要用 FTP、SFTP 還是 FTPS?三個名字只差一兩個字母,連線埠、加密方式、防火牆會不會卡住,差別卻很大。選錯了,輕則檔案傳到一半卡住,重則帳號密碼在網路上以明文裸奔,被攔截就等於把整個網站交出去。

這篇把 FTP、SFTP、FTPS 三種主機檔案傳輸協定的差異講清楚:它們各自怎麼運作、安全性差在哪、連線埠與防火牆會遇到什麼問題,以及在台灣常見的虛擬主機與 cPanel 環境下,你實際上該選哪一個、設定要填什麼。先給結論:架新站、做新的傳輸需求,預設就選 SFTP。

FTP、SFTP、FTPS 三者最關鍵的差異是什麼

最關鍵的差異有三個層面:加密方式、使用的連線埠、以及底層協定根本不同。FTP 完全不加密,FTPS 是把 FTP 包進 SSL/TLS 加密層,SFTP 則是建在 SSH 之上、和 FTP 沒有血緣關係的另一套協定。

這點最容易被誤會。光看名字會以為三者是同一家族、可以互通,事實上一個 FTP 客戶端連不上 SFTP 伺服器,一個 SFTP 客戶端也連不上 FTPS 伺服器。它們解決的是同一件事(把檔案在你電腦和主機之間搬來搬去),但在網路封包層面是三條不同的路。

下表先讓你抓到全貌,後面每一節再展開:

比較項目 FTP FTPS SFTP
底層協定 FTP(RFC 959) FTP 外加 TLS SSH(RFC 4253)
預設連線埠 21 加 20 或動態埠 21 加動態埠(顯式)、990 加 989(隱式) 22 單一埠
加密 無,全程明文 TLS(連線時協商) SSH 原生內建
身分驗證 帳號加密碼 帳號加密碼,外加伺服器憑證 帳號密碼,或 SSH 金鑰
防火牆難度 高(雙通道、被動埠範圍) 高(與 FTP 相同) 低(單一埠)
連線數 控制與資料兩條 控制與資料兩條 單一連線完成全部操作

FTP 為什麼到現在還在用,又為什麼不該再用

FTP 是這三者裡最古老的,定義於 1985 年的 RFC 959,比 HTTP 還早問世將近二十年。它到現在仍存在,純粹是因為數十年累積的裝置與系統慣性,但對於新的網站維運需求,它有兩個源自那個年代的設計缺陷讓人無法接受。

第一個是雙通道設計。FTP 把「控制連線」(登入、列目錄、下達傳輸指令)放在 21 埠,把「資料連線」(真正的檔案位元組)放在另一條連線。這在 1971 年那種沒有防火牆、每台主機都有公開 IP 的網路裡沒問題,但今天它正是 FTP 穿越防火牆與 NAT 時各種卡頓的根源。

第二個是明文傳輸。FTP 的規格早於 TLS 出現,所以使用者名稱、密碼、指令、檔案內容全部以明文在網路上傳遞。只要有人在你和主機之間的網路路徑上監聽,就能把這些全部讀走。對於今天幾乎任何帶有敏感性的資料來說,純 FTP 等於沒有防護。

那為什麼還看得到它?多半是相容性橋接:老舊的 POS 機、某些工業或科學儀器、出廠就只內建 FTP 客戶端的設備,升級成本比繼續把它關在層層防火牆後面還高。但這是「不得不維護舊系統」的情境,不是「規劃新傳輸時的選項」。架 WordPress 站、傳佈景主題與外掛,沒有任何理由從 FTP 開始。

FTPS 是什麼,跟 FTP 差在哪

FTPS 是把純 FTP 加上一層 TLS 加密,全名是 FTP over SSL/TLS,有時寫成 FTP-SSL。它的協定語意和 FTP 完全一樣,一樣的指令、一樣的雙通道結構、一樣有主動與被動模式之分,差別只在於連線被 TLS 加密,而且伺服器會出示一張 X.509 憑證讓客戶端驗證。

FTPS 又分成兩種,連的埠不一樣,新手最常在這裡卡住:

  • 顯式 FTPS(Explicit):客戶端先連上一般的 21 埠,再下達 AUTH TLS 指令把連線升級成加密。這是目前的主流標準,FileZilla 裡標示為「FTP over TLS(explicit)」的就是它。
  • 隱式 FTPS(Implicit):連線一建立就立刻進行 TLS 交握,控制走 990 埠、資料走 989 埠。這是 1990 年代末期的舊做法,現代環境多半視為已淘汰,但在一些舊系統上還看得到。

FTPS 解決了 FTP 的加密問題,卻原封不動繼承了其他所有 FTP 的麻煩。雙通道還在,主動與被動模式、被動埠範圍的防火牆設定問題一個都沒少。除此之外,你還多了一張 TLS 憑證要安裝、更新、輪替,憑證過期或不符就會讓連線整個斷掉。某些防火牆會因為看不進加密串流、無法追蹤控制通道的埠協商,乾脆把 FTPS 的資料連線丟棄。

FTPS 合理的使用時機,是你已經有一套必須維持 FTP 形式的整合(例如某個只支援 FTP 的合作夥伴或廠商流程),又需要替它補上加密。如果是從零開始的新需求,SFTP 是更乾淨的答案。

SFTP 是什麼,為什麼它通常是首選

SFTP 的全名是 SSH File Transfer Protocol,是這三者裡名字最誤導人的一個,因為它根本不是 FTP。它不共用 FTP 的程式碼、指令或設計血統,而是 SSH 的一個子系統,整個跑在一條 SSH 連線裡,預設走 22 埠。

它的運作流程是這樣:客戶端先對主機的 22 埠開啟一條 SSH 連線,接著做身分驗證(可以用密碼,生產環境更常用 SSH 金鑰對),驗證通過後請求 sftp 子系統,伺服器就在這條既有的 SSH 連線裡提供檔案傳輸服務。列目錄、下載、上傳、建資料夾、改權限,全部在同一條加密通道內完成。

SFTP 的所有好處都來自 SSH:預設就加密、原生支援金鑰驗證、單一埠運作、主機金鑰驗證、現代加密演算法。SSH 是全世界幾乎每一台伺服器拿來做遠端管理的標準,所以 SFTP 也繼承了二十多年的安全強化、函式庫支援與維運工具。對大多數人來說,選它的理由很實際:

  • 對外只需要一個埠(22),防火牆設定單純,不會出現「列得出目錄卻傳不動檔案」那種被動埠問題。
  • 預設加密,沒有 TLS 憑證要管理、不會憑證過期。
  • 原生 SSH 金鑰驗證讓你輪替憑證時不必動到密碼。
  • 每一個現代傳輸客戶端、每一家雲端平台、每一台 Unix 或 Linux 伺服器都內建支援。

哪一種最安全,SFTP 真的只是「加密版的 FTP」嗎

論安全性,SFTP 通常被視為最穩妥的選擇,但這不是因為它的加密強度天生勝過 FTPS,而是因為它更難被設定錯。SFTP 的加密是強制的、金鑰驗證是原生的、單一埠也縮小了攻擊面;FTPS 則需要你正確設定 TLS、備妥有效憑證、還要小心處理雙通道,每一個環節都是一個可能把流量曝露出去的設定漏洞。

要破除一個常見誤會:SFTP 並不是「把 FTP 打開加密開關」而已。它和 FTP 是兩套完全不同的協定,只是名字長得像,造成「三者同源」的錯覺。同樣地,SSH 也不會去「通道化」FTP,如果你想要在 SSH 連線上傳檔案,用的就是 SFTP,而不是把 FTP 塞進 SSH。

至於速度,實務上 SFTP 與 FTPS 的差距通常小到不會是決策依據。傳單一大檔時 FTPS 的每封包額外負擔較低、CPU 開銷可能略小;傳大量小檔時 SFTP 只需建立一條連線、反而可能較快。真實工作負載下,網路延遲與磁碟讀寫才是主導因素,不必為了帳面速度去選協定。

在 cPanel 與台灣常見虛擬主機上,連線設定要填什麼

回到最實際的場景:你買了一個虛擬主機方案,想用 FileZilla 把 WordPress 檔案傳上去,連線視窗該怎麼填?

第一步是去主機後台拿連線資訊。多數使用 cPanel 的主機商,會在後台的「FTP 帳號」區塊提供主機名稱、使用者名稱與埠號;不少台灣主機商預設就支援 SFTP,但有些需要你開通 SSH 或 Shell 存取權限後才能用,這點不確定時直接問主機商客服最快。拿到的資訊通常包含這幾項:

  • 主機名稱(Host):可以是你的網域,或主機商給的伺服器位址、IP。用 SFTP 時,FileZilla 的協定要選「SFTP – SSH File Transfer Protocol」。
  • 埠號(Port):SFTP 預設是 22,顯式 FTPS 是 21,隱式 FTPS 是 990。有些主機商基於安全會改成非標準埠,以後台給的為準。
  • 使用者名稱與密碼:用主機後台建立的 FTP 或 SSH 帳號,不是你 WordPress 後台的登入帳密,兩者是不同系統。

如果你的主機只給 FTP 不給 SFTP,而且傳輸時遇到「能登入、能看目錄,但檔案傳到一半就停住」的狀況,多半是被動模式的埠範圍被防火牆擋住了。FTP 與 FTPS 在被動模式下,資料連線會用一段高位埠範圍,主機端與你這端的防火牆都得放行那段範圍才行。這正是 SFTP 只用單一埠、設定上省心的地方,能選 SFTP 就盡量用 SFTP。

值得一提的順帶情境是:有些電商或金流外掛會要求你把檔案或對帳資料以 FTP/SFTP 形式跟外部系統交換。這種收款相關的資料屬於高度敏感,原則上就是不要走純 FTP,能用 SFTP 就用 SFTP,至少也要 FTPS,至於具體的金流串接設定則依各服務的文件為準,不在本文範圍。

三者該怎麼選,一個簡單的判斷順序

把前面的內容收束成一條可以直接照做的決策路徑:規劃新的檔案傳輸時,預設選 SFTP,因為它單一埠、原生金鑰驗證、客戶端支援最廣,且最難設定錯。只有當你有一套既存、且必須維持 FTP 形式的整合,對方又無法改用 SFTP 時,才退而選顯式 FTPS,把它當成相容性需求而非首選。至於純 FTP,只在面對那些出廠就只會 FTP、沒有其他路可走的老舊裝置時才用,而且要把它隔離起來、把那組帳密當成隨時可能外洩來防範,絕不拿它傳任何敏感資料。

對經營 WordPress 網站的人來說,這個順序更直接:到主機後台確認有沒有開 SFTP,有就用,把 FileZilla 協定設成 SFTP、埠填 22、帳密用主機端的 FTP/SSH 帳號。下次連線設定畫面再跳出來問你要哪一種,你會知道為什麼選它,而不是隨手按一個。

相關文章
標籤: SFTP, FTPS, FTP, 檔案傳輸, WordPress 主機