1. 程式人生 > 實用技巧 >FTP與SFTP兩者有什麼區別

FTP與SFTP兩者有什麼區別

在實際專案開發中最常使用的檔案傳輸的方式有ftp和sftp兩種,但是這兩個傳輸方式各有什麼特點呢?本文接下來將討論SFTP、FTP的區別。

一、FTP協議

FTP是TCP/IP協議組中的協議之一,TP協議由兩個部分組成:

FTP伺服器(用來儲存檔案)
FTP客戶端(使用者可以使用FTP客戶端通過FTP協議訪問位於FTP伺服器上的資源)

預設情況下FTP協議使用TCP埠中的20和21這兩個埠。21埠用於傳輸控制資訊,而是否使用20作為傳輸資料的埠與FTP使用的傳輸模式有關,如果採用被動模式則具體使用哪個埠要伺服器端和客戶端協商決定。FTP傳輸模式分為以下兩種:

主動模式(Port)
被動模式(Passive)


1. 主動模式



FTP客戶端首先和FTP伺服器的TCP21埠建立連線,通過這個通道傳送命令,客戶端需要接收資料的時候在這個通道上傳送PORT命令。 PORT命令包含了客戶端用什麼埠接收資料。在傳送資料的時候,伺服器端通過自己的TCP 20埠連線至客戶端的指定埠傳送資料。

2. 被動模式



在建立控制通道與主動模式相似,但建立連線後是Pasv命令。FTP伺服器收到Pasv命令後便隨機開啟一個高階埠(埠號大於1024)並且通知客戶端在這個埠上傳送資料的請求,客戶端連線FTP伺服器此埠,通過三次握手建立通道,然後FTP伺服器將通過這個埠進行資料的傳送。

注意:很多防火牆在設定的時候都是不允許接受外部發起的連線的,所以許多位於防火牆後或內網的FTP伺服器不支援PASV模式,因為客戶端無法穿過防火牆開啟FTP伺服器的高階埠;而許多內網的客戶端不能用PORT模式登陸FTP伺服器,因為從伺服器的TCP 20無法和內部網路的客戶端建立一個新的連線,造成無法工作。

二、SFTP協議

SFTP是SSH File Transfer Protocol的縮寫,安全檔案傳送協議。SFTP與FTP有著幾乎一樣的語法和功能。SFTP為SSH的其中一部分,是一種傳輸檔案至 Blogger 伺服器的安全方式。其實在SSH軟體包中,已經包含了一個叫作SFTP的安全檔案資訊傳輸子系統,SFTP本身沒有單獨的守護程序,它必須使用sshd守護程序(埠號預設是22)來完成相應的連線和答覆操作,所以從某種意義上來說,SFTP並不像一個伺服器程式,而更像是一個客戶端程式。

三、兩者的主要區別

FTP與SFTP兩者有什麼區別

連結方式:FTP使用TCP埠21上的控制連線建立連線。而,SFTP是在客戶端和伺服器之間通過SSH協議(TCP埠22)建立的安全連線來傳輸檔案。
安全性:SFTP使用加密傳輸認證資訊和傳輸的資料,所以使用SFTP相對於FTP是非常安全。
效率:SFTP這種傳輸方式使用了加密解密技術,所以傳輸效率比普通的FTP要低得多。

SFTP的概念

sftp是Secure File Transfer Protocol的縮寫,安全檔案傳送協議。可以為傳輸檔案提供一種安全的網路的加密方法。sftp 與 ftp 有著幾乎一樣的語法和功能。SFTP 為 SSH的其中一部分,是一種傳輸檔案至 Blogger 伺服器的安全方式。其實在SSH軟體包中,已經包含了一個叫作SFTP(Secure File Transfer Protocol)的安全檔案資訊傳輸子系統,SFTP本身沒有單獨的守護程序,它必須使用sshd守護程序(埠號預設是22)來完成相應的連線和答覆操作,所以從某種意義上來說,SFTP並不像一個伺服器程式,而更像是一個客戶端程式。SFTP同樣是使用加密傳輸認證資訊和傳輸的資料,所以,使用SFTP是非常安全的。但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網路安全性要求更高時,可以使用SFTP代替FTP。
這裡我們用sftp來對遠端伺服器和本地電腦上檔案進行上傳,下載操作。


用法:

連線遠端伺服器:

sftp username@ip

回車之後輸入伺服器密碼即可連線成功。

將檔案上傳到伺服器上:

put [本地檔案的地址] [伺服器上檔案儲存的位置]

將伺服器上的檔案下載到本地:

get [伺服器上檔案儲存的位置] [本地要儲存的位置]