HTTP 和 HTTPS 是我們用于在瀏覽器中查看網站的通信協議,但在此之前,網站運營商需要將一些文件上傳到連接到互聯網的服務器。多年來,最簡單、最方便的方法是通過FTP(文件傳輸協議)。它今天仍在使用,考慮到該技術已有近 50 年的歷史,這是一個了不起的成就,但FTP 開始顯示出它的老化。
事實上,開發(fā)文件傳輸協議的專家遠沒有今天的網站所有者那么多需要擔心的事情,而且問題是不可避免的。幸運的是,有足夠的人準備好確保有解決這些問題的方法。這些人創(chuàng)建了SFTP(或 SSH 文件傳輸協議)。
什么是 SFTP?
在我們回答這個問題之前,我們需要回到 SSH 的開端——這種底層通信技術使 SFTP 成為執(zhí)行許多不同任務的出色工具。SSH 代表Secure Shell ,它是一種遠程管理協議,最初由名為 Tatu Ylonen 的芬蘭研究員開發(fā),用于減輕密碼嗅探攻擊的風險。SSH 的第一個版本于 1990 年代發(fā)布,與此同時,Ylonen 還對 SFTP 的早期版本投入了一些工作。
在 2000 年代初期,互聯網工程任務組(IETF) 開始致力于SSH-2——該協議的修訂版本,最終于 2006 年問世,并具有更好的安全性和許多新功能。SSH-2 與Tatu Ylonen 的版本不兼容,這意味著當 IETF 接手時,它也需要徹底改造SFTP 的原始化身。
這被證明有點復雜。有一次,圍繞SFTP 是一個協議還是一個完整的遠程文件系統存在爭論,這稍微延遲了開發(fā)。然而,最終,在 2013 年,它的工作重新開始,并且該協議從那時起就一直在使用。
您可能想知道 SSH 和 SFTP 之間的區(qū)別是什么。SSH 是一種允許管理員在服務器上管理和執(zhí)行遠程命令的協議。SFTP 是一個擴展,允許他們通過 SSH 提供的安全連接上傳、下載和管理文件。
我為什么要使用它?
SFTP 有時被稱為“安全文件傳輸協議” ,您可能不會太驚訝地了解到安全性是您應該在標準 FTP 上使用 SFTP 的主要原因。以下是更詳細的差異。
當通過常規(guī) FTP 連接進行連接時,客戶端必須由服務器進行身份驗證,而且,正如您現在可能已經猜到的那樣,這是通過用戶名和密碼進行的。這些登錄憑據以及發(fā)送到服務器的其余信息以純文本形式傳輸,考慮到協議的年齡,這真的不足為奇。
畢竟,在 20 世紀 70 年代,世界上并沒有充斥著可以嗅探您的通信、竊取您的密碼或劫持您的連接的黑客。然而,如今情況有所不同,這就是為什么您需要確保與遠程主機的連接是安全的。
因為它基于 SSH,所以 SFTP使用密碼術來保護傳輸中的數據,并確保只有授權用戶才能管理服務器上的文件。首先,客戶端和主機使用對稱加密算法對連接進行加密。對稱加密意味著數據由同一個密鑰加密和解密。
密鑰是在會話開始時使用密鑰交換算法創(chuàng)建的,它的好處是客戶端和服務器不會傳輸它或與任何其他方共享它。相反,密鑰是根據客戶端和服務器之間共享的公共數據片段計算的。
當連接安全時,SSH 協議命令使用非對稱加密算法來驗證客戶端。非對稱加密基于公私密鑰對。在這種情況下,公鑰加密數據,私鑰解密數據。服務器生成并加密質詢并將其發(fā)送給客戶端。如果客戶端能夠解密,就證明自己擁有私鑰,有權與服務器進行通信。
從用戶的角度來看,這整個機制通常隱藏在簡單的用戶名和密碼驗證機制之后。換句話說,建立 SFTP 連接所需執(zhí)行的步驟并不比在常規(guī) FTP 會話期間執(zhí)行的步驟復雜。
我能用它做什么?
很多人認為SFTP 是通過安全 shell 連接運行的常規(guī) FTP。不是這種情況。這兩個協議確實共享一些功能,例如上傳和下載文件的能力以及目錄的遠程管理,但SFTP 為客戶端提供了一些額外的功能。這些功能包括遠程文件刪除、目錄列表以及隨文件提供更詳細的元數據的能力。
SFTP的優(yōu)缺點
SFTP 并不是在兩臺相連的計算機之間安全傳輸文件的唯一方法。例如,安全復制協議 (SCP)也使用 SSH 來促進客戶端和服務器之間的數據復制,并且正確實施 rsync 實用程序可以讓您獲得相同的結果。然而,有限的功能和對某些平臺缺乏支持意味著對于大多數人來說,這些替代方案并不真正可行。通常,用戶只有兩個選項可供選擇——SFTP 或 FTPS。
FTPS 是基于 TLS (傳輸層安全性)的常規(guī)文件傳輸協議的實現。它也使用密碼術來確保客戶端和服務器之間的連接是安全的,而且它絕對比使用普通的舊 FTP 更可取。
然而,與 SFTP 相比,它落后了。從歷史上看,配置 FTPS 以與防火墻一起工作一直是一個挑戰(zhàn),除了所有額外功能之外,SFTP 還具有一些有用的功能,例如繼續(xù)中斷傳輸的能力。過去,SFTP 大多由命令行客戶端支持,這對于經驗不足的用戶來說是一個問題,但現在,像FileZilla這樣具有直觀圖形界面的應用程序也可以建立 SFTP 連接。SFTP 唯一真正的缺點是它更難在服務器端實施,因此并非所有托管服務提供商都提供。
如何讓它更安全?
如您所見,您的 SFTP 連接由極其復雜的加密機制提供支持,可確保您的數據安全。然而,為了可用性,在大多數情況下,您使用用戶名和密碼登錄,這就是事情可能會出錯的地方。在許多情況下,弱密碼會使所有其他安全機制完全失效,盡管 SFTP 通信基于復雜的密碼學,也不例外。賭注也相當高。
通過 SFTP 登錄的相同憑據也為您提供 SSH 訪問權限,這意味著如果黑客得到它們,他們可以在服務器上遠程執(zhí)行命令。您必須確保所有具有SSH 和 SFTP 訪問權限的用戶都使用強而獨特的密碼以及應用了所有安全更新的最新客戶端。當然,服務器端的措施也需要到位,但它們是虛擬主機的責任。
結論
FTP 在 Internet 的發(fā)展中發(fā)揮了重要作用,可以肯定地說,如果沒有它,在線世界將大不相同。然而,它在構建時并沒有考慮到安全性,現在它可能會使您的整個在線項目面臨風險。鑒于您有諸如SFTP 之類的基于復雜加密算法的替代方案,您沒有理由使用 FTP。