這次使用FileZilla Server 1.3來架設FTP,FTPS。
至於SFTP,則使用FreeFTPd來架設SFTP 。
FileZilla Server可以安裝在windows 10上做使用相當方便。
※在安裝前,請先開啟Server / Client防火牆Port 21、22、990。
FileZilla Server 1.3安裝
1. 安裝FTP Server – FileZilla 1.3.0
2. 預設全選
3. 選擇安裝路徑
4. 開始目錄名稱設定-預設
5. 設定FileZilla Server預設port(14148),與設定密碼。
6. 操作介面設定
7. FileZilla安裝會自己產生TLS憑證
設定FileZilla Server
1. 連結FileZilla Server
2. 輸入安裝時設定的Admin密碼
3. 繼續與儲存主機的指紋
4. 設定FTPServer
5. 新增FTP、FTPS
6. 選擇隱含式的FTP驗證。
7. 新增使用者與虛擬目錄設定。
8. 設定完成畫面
9. 測試FTP使用FileZilla Client,打開站台管理員新增站台,加密模式選擇:僅使用明碼的FTP。
10. 傳輸設定,選擇主動模式
11. 上傳檔案測試
12. Ftps連線測試,加密方式:需透過隱含是的TLS的FTP。
傳輸設定:主動模式
13. 連線後會開啟990Port,測試刪除上傳檔案。
安裝SFTP Server -freeFTPd
1. 開始安裝freeFTPd
2. 選擇安裝路徑
3. 預設完整安裝
4. 預設的安裝資料夾名稱
5. 創建桌面圖示
6. 確認安裝資訊
7. 產生私鑰-是
8. 是否變為系統服務-是
9. 打開freeFTPd開始設定
10. 新增使用者
11. 設定使用者資訊:
a. 使用者家目錄
b. 使用者可用的連線協定 FTP/SFTP
12. SFTP設定:
a. 聆聽的IP位址,預設全部界面。
b. 聆聽的Port,預設22 port。
c. 完成設定後開始並儲存。
13. 開始執行後畫面如下
14. 使用FileZilla Client測試連線,使用快速連線即可。
信任主機的連線金鑰。
15. 登入成功並可以上傳檔案
FTP主動模式與被動模式
A. 主動模式:
命令端由Client建立,資料由Server主動連線。
1. 命令通道:Client端開啟一個N Port(N>1024),使用N Port連線到Server端的21Port,Client監聽N+1 Port,併傳送N+1 Port給Server端。
2. 資料傳輸:Server端從自己的20 Port傳送資料至Client端提供的N+1 Port。
3. 連線失敗原因:可能被Server/Client端的防火牆檔住,Client端如果在Nat環境內會連不到。
B. 被動模式:
命令與資料都是由Client進行連線。
1. 命令通道:Client開啟一個N port(N>1024)和N+ 1Port ,使用N Port 向Server端的21Port 進行連線,並提交pasv命令給Server,Server返回一個 P Port (P>1024)給Client。
2. 資料傳輸:Client端從自己的N+1 Port連線至Server的P Port來進行資料傳輸。
3. 連線失敗原因:Server端的防火牆
C. 總結:
1. 主動模式對Server管理比較有利,但Server端連接Client端的隨機埠可能被防火牆檔掉。
2. 被動模式對Client管理比較有利,Client要對Server端建立兩個連線,也可能被Server端的防火牆檔掉。
3. 針對環境選擇自己適合的方式來做資料傳輸的應用。
心得
原本建立好FTP server後,但因為都用FileZilla Client的快速連線,來使用FTP功能,原本都沒有去設定主動被動模式,所以導致連接到,但都無法讀取跟目錄的問題。也是查問題後才發現要特別設定FTP的主被動模式,而在使用的時候還是會習慣使用cmd指令netstat來觀察主機目前開啟建立的連線埠有哪些。除了方便查看目前狀態,也能掌握主機有無異常的開啟連接埠與陌生的主機進行連線,防火牆規則也盡量越精準越好,這樣自然可以方便的使用這些服務。
參考資料
https://filezillapro.com/docs/v3/faq/ftp-connection-active-passive-mode/#ConnectFTP
https://zh.wikipedia.org/wiki/%E6%96%87%E4%BB%B6%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE