FTP、SFTP、SCP、SSH、OpenSSH關係解密

FTP(File Transfer Protocol):是TCP/IP網絡上兩臺計算機傳送文件的協議,FTP是在TCP/IP網絡和INTERNET上最早使用的協議之一,它屬於網絡協議組的應用層。FTP客戶機可以給服務器發出命令來下載文件,上載文件,創建或改變服務器上的目錄。相比於HTTP,FTP協議要複雜得多。複雜的原因,是因爲FTP協議要用到兩個TCP連接,一個是命令鏈路,用來在FTP客戶端與服務器之間傳遞命令;另一個是數據鏈路,用來上傳或下載數據。FTP是基於TCP協議的,因此iptables防火牆設置中只需要放開指定端口(21 + PASV端口範圍)的TCP協議即可。

FTP工作模式
PORT(主動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端在命令鏈路上用PORT命令告訴服務器:“我打開了一個1024+的隨機端口,你過來連接我”。於是服務器從20端口向客戶端的1024+隨機端口發送連接請求,建立一條數據鏈路來傳送數據。
PASV(Passive被動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器在命令鏈路上用PASV命令告訴客戶端:“我打開了一個1024+的隨機端口,你過來連接我”。於是客戶端向服務器的指定端口發送連接請求,建立一條數據鏈路來傳送數據。
PORT方式,服務器會主動連接客戶端的指定端口,那麼如果客戶端通過代理服務器鏈接到internet上的網絡的話,服務器端可能會連接不到客戶端本機指定的端口,或者被客戶端、代理服務器防火牆阻塞了連接,導致連接失敗
PASV方式,服務器端防火牆除了要放開21端口外,還要放開PASV配置指定的端口範圍

SFTP(Secure File Transfer Protocol):安全文件傳送協議。可以爲傳輸文件提供一種安全的加密方法。sftp 與 ftp 有着幾乎一樣的語法和功能。SFTP爲SSH的一部份,是一種傳輸文件到服務器的安全方式。在SSH軟件包中,已經包含了一個叫作SFTP(Secure File Transfer Protocol)的安全文件傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(端口號默認是22)來完成相應的連接操作,所以從某種意義上來說,SFTP並不像一個服務器程序,而更像是一個客戶端程序。SFTP同樣是使用加密傳輸認證信息和傳輸的數據,所以,使用SFTP是非常安全的。但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網絡安全性要求更高時,可以使用SFTP代替FTP。

SCP(Secure Copy):scp就是secure copy,是用來進行遠程文件複製的,並且整個複製過程是加密的。數據傳輸使用ssh,並且和使用和ssh相同的認證方式,提供相同的安全保證。

FTP & SCP/SFTP比較:
和ftp不同的是sftp/scp傳輸協議是採用加密方式來傳輸數據的。而ftp一般來說允許明文傳輸,當然現在也有帶SSL的加密ftp,有些服務器軟件也可以設置成“只允許加密連接”,但是畢竟不是默認設置需要我們手工調整,而且很多用戶都會忽略這個設置。
普通ftp僅使用端口21作爲命令傳輸。由服務器和客戶端協商另外一個隨機端口來進行數據傳送。在pasv模式下,服務器端需要偵聽另一個端口。假如服務器在路由器或者防火牆後面,端口映射會比較麻煩,因爲無法提前知道數據端口編號,無法映射。(現在的ftp服務器大都支持限制數據端口隨機取值範圍,一定程度上解決這個問題,但仍然要映射21號以及一個數據端口範圍,還有些服務器通過UPnP協議與路由器協商動態映射,但比較少見)
當你的網絡中還有一些unix系統的機器時,在它們上面自帶了scp/sftp等客戶端,不用再安裝其它軟件來實現傳輸目的。
scp/sftp屬於開源協議,我們可以免費使用不像FTP那樣使用上存在安全或版權問題。所有scp/sftp傳輸軟件(服務器端和客戶端)均免費並開源,方便我們開發各種擴展插件和應用組件。
小提示:當然在提供安全傳輸的前提下sftp還是存在一些不足的,例如他的帳號訪問權限是嚴格遵照系統用戶實現的,只有將該帳戶添加爲操作系統某用戶才能夠保證其可以正常登錄sftp服務器

SSH(Secure Shell):,由 IETF 的網絡工作小組(Network Working Group)所制定;SSH 爲建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專爲遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。
SSH是由客戶端和服務端的軟件組成的:服務端是一個守護進程(daemon),他在後臺運行並響應來自客戶端的連接請求。服務端一般是sshd進程,提供了對遠程連接的處理,一般包括公共密鑰認證、密鑰交換、對稱密鑰加密和非安全連接; 客戶端包含ssh程序以及像scp(遠程拷貝)、slogin(遠程登陸)、sftp(安全文件傳輸)等其他的應用程序。
從客戶端來看,SSH提供兩種級別的安全驗證:第一種級別(基於口令的安全驗證); 第二種級別(基於密匙的安全驗證)。
SSH 主要有三部分組成: 傳輸層協議 [SSH-TRANS] ;用戶認證協議 [SSH-USERAUTH] ;連接協議 [SSH-CONNECT]。

OpenSSH:是SSH(Secure SHell)協議的免費開源實現。SSH協議族可以用來進行遠程控制,或在計算機之間傳送文件。而實現此功能的傳統方式,如telnet(終端仿真協議)、 rcp ftp、 rlogin、rsh都是極爲不安全的,並且會使用明文傳送密碼。OpenSSH提供了服務端後臺程序和客戶端工具,用來加密遠程控件和文件傳輸過程的中的數據,並由此來代替原來的類似服務。 OpenSSH是使用SSH透過計算機網絡加密通訊的實現。它是取代由SSH Communications Security所提供的商用版本的開放源代碼方案。目前OpenSSH是OpenBSD的子計劃。OpenSSH常常被誤認以爲與OpenSSL有關聯,但實際上這兩個計劃的有不同的目的,不同的發展團隊,名稱相近只是因爲兩者有同樣的軟件發展目標──提供開放源代碼的加密通訊軟件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章