FTP/FTPS/SFTP到底是什麼?

Lily
Sep 30, 2023

--

上週工作時遇到SFTP拋檔問題,剛好遇到這週連假,想說把它記錄下來,希望其他像我剛入門的新手可以少花點時間解決問題。

那所以到底什麼是FTP/FTPS/SFTP?它們又有哪些差別?

FTP、FTPS 和 SFTP 都是用於文件傳輸的協議,但它們在安全性和運作方式上有所不同:

FTP(File Transfer Protocol):

FTP 是最早用於文件傳輸的協議之一,它使用明文傳輸,不提供加密,因此在安全性方面存在風險。

FTP 使用兩個連接:控制連接(用於發送命令和接收回應)和數據連接(用於實際文件傳輸)。

由於缺乏加密,FTP 在傳輸敏感數據時不安全,容易受到竊聽和中間人攻擊。

FTPS(FTP Secure):

FTPS 是在傳統FTP協議之上添加了安全性層(SSL/TLS)的變種,用於加密數據傳輸。

FTPS 可以使用隱式或顯式的SSL/TLS連接,提供對數據的加密和身份驗證,因此比標準FTP更安全。

隱式FTP是在建立連接時立即加密,而顯式FTP要求客戶端明確要求安全連接。

SFTP(SSH File Transfer Protocol):

SFTP 不同於FTP和FTPS,它是基於SSH協議的一個子協議,用於安全文件傳輸。

SFTP 使用單一加密連接,所有數據都在該連接上進行傳輸,並且提供強大的安全性,包括數據加密、身份驗證和數據完整性保護。

SFTP通常被視為最安全的文件傳輸協議之一,特別適用於傳輸敏感信息。

總之,FTP、FTPS 和 SFTP 都是用於文件傳輸的協議,但它們的安全性和工作方式不同。為了確保數據的安全傳輸,建議使用FTPS或SFTP而不是傳統的FTP協議。FTPS提供了加密選項,而SFTP提供了更高級的安全性,特別適用於需要額外保護的應用場景。

簡單來說兩台主機傳輸檔案時,時常會用到FTP、FTPS或SFTP方式來交換檔案,而FTP不提供加密、FTPS是在FTP增加安全性層(SSL/TLS)加密方式、SFTP則是用SSH協議加密。

FTP、FTPS 控制連接通常使用21 port,數據連接則依據設置來決定,SFTP使用單一連接進行所有通信,默認是22 port。

公司內部的主機架構如上,因外部主機傳檔資安風險較高,所以這次使用的是SFTP傳輸方式,遇到的問題是進入SFTP主機後沒看到對應資料夾路徑

先朝向確認防火牆和資料夾權限設定方向查找,先開啟cmd命令提示字元確認防火牆已開通。

Step 1. 防火牆是否開通?

#確認到SFTP主機22port有沒有開通
telnet {SFTP主機IP} 22

防火牆開通後再確認 拋檔主機使用的 帳號是否有對應資料夾的權限,可參考下列微軟的文章。

Step 2. 帳號是否有資料夾權限?

#1.資料夾右鍵選取屬性,然後選取共用索引標籤上的進階共用。
#2.選取權限,確認 {拋檔主機使用的帳號} 是否有權限。

確認資料夾有讀取權限後,我使用另一台測試拋檔主機測試下指令看看會看到哪些資料夾。

Step 3. 使用測試主機下指令測試連接

#使用SFTP(SSH File Transfer Protocol)連接到SFTP主機
sftp -P 22 username@hostname

SFTP:這是SFTP客戶端程式的名稱,用於建立安全的文件傳輸連接。

-P 22:這是一個選項,用於指定遠程伺服器的端口號。在這個例子中,-P 選項後面的數字 22 指定了SSH協議的默認端口號,即22號端口。

username:這是要用來登錄SFTP主機的帳號名稱。

hostname:這是SFTP主機名或IP地址,用於指定要連接的遠程伺服器。

Step 4. 成功進入SFTP主機

當執行以下指令 sftp -P 22 username@hostname 並且成功連線到遠程伺服器(SFTP主機)後,SFTP客戶端會進入互動模式,並且通常會顯示類似以下的畫面:

Connected to hostname.
sftp>

在這個畫面中,你會看到以下信息:

  1. Connected to hostname.:這是一條連線成功的消息,顯示已經成功連接到指定的遠程伺服器,其中 hostname 是遠程伺服器的名稱或IP地址。
  2. sftp>:這是SFTP互動提示符,表示你現在處於SFTP客戶端的命令行互動模式。你可以在此處輸入SFTP指令以執行各種操作,例如列出遠程目錄中的文件、下載文件、上傳文件、切換目錄等。

一旦看到這個畫面,就確認SFTP成功連上,你就可以開始使用各種SFTP指令來操作遠程伺服器上的文件和目錄。當你完成SFTP會話後,可以使用 exitquit 指令來退出SFTP並返回到命令行提示符。

Step 5. 確認進入SFTP主機的路徑

但因為這次的問題是進入SFTP主機後沒看到對應資料夾路徑,所以需要查看現在所在的路徑。

#列出當前目錄中的所有文件和目錄,並顯示它們的詳細信息,包括隱藏文件
ls -al

比對目錄資料夾後,發現原來是SFTP和FTPS通到的資料夾路徑不同,SFTP通到的是另外一個資料夾,如下圖,後來把SFTP資料夾建於新的路徑就可以啦!

可喜可賀,終於找到原因,希望大家看完後可以比我更快找到問題解決!祝大家中秋快樂,放假去(撒花!

Photo by Priscilla Du Preez 🇨🇦 on Unsplash

--

--