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