天天看點

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有關聯,但實際上這兩個計劃的有不同的目的,不同的發展團隊,名稱相近隻是因為兩者有同樣的軟體發展目标──提供開放源代碼的加密通訊軟體。

繼續閱讀