目錄

如何在 Ubuntu 上架設 FTP 伺服器
如何在 Ubuntu 上架設 FTP 伺服器

文件傳輸協議(FTP)是一種透過網路上使用 TCP/IP 協議在電腦之間共享文件的方法。它採用客戶端 – 伺服器框架和安全套接層(SSL)來確保資料傳輸的安全。

FTP 與 hypertext transfer protocol(HTTP)和簡單郵件傳輸協議(SMTP)相似,但處理的資料類型不同。它對於管理遠程系統,如虛擬私人伺服器(VPS),至關重要。

在本文中,我們將解釋如何在 Ubuntu VPS 上架設 FTP 伺服器。我們將使用 vsftpd 伺服器,這是 UNIX 系統上最快速和最安全的 FTP 伺服器之一。

設定 FTP 伺服器的先決條件

在開始執行這些步驟之前,請購買具有廣泛軟體支援的 Ubuntu VPS 託管計劃(例如 TAKI Cloud),以避免不相容問題。 請注意,您的伺服器必須運行 Ubuntu,因為命令因 Linux 發行版而異。

然後,使用 SSH 用戶端(例如 PuTTY、Terminal 或 TAKI Cloud 的瀏覽器 Terminal – 控制台)連線到您的伺服器。 TAKI Cloud 用戶可以在會員服務管理介面的 VPS 說明選單中找到 IP 位址和登入詳細資訊。

找到 IP 位址和登入詳細資訊
找到 IP 位址和登入詳細資訊

預設情況下,您將以 root 身分連線。 我們建議建立一個具有超級使用者權限的新帳戶,以避免意外執行破壞性命令。 以下是命令:

				
					adduser account
usermod -aG sudo account
				
			

將帳戶替換為您想要的使用者名稱。 然後,透過執行以下命令切換到新用戶並繼續設定:

				
					su account
cd
				
			

如何在 Ubuntu 上設定 FTP 伺服器

在本節中,我們將解釋在 Ubuntu 上設定 FTP 伺服器的六個步驟。 如果你在過程遇到困難,您可以在以下留言或是在我們會員平台發工單詢問。

1. 安裝 vsftpd

  1. 首先安裝 vsftpd,它負責在您的 VPS 上啟用 FTP 服務。 步驟如下:
				
					sudo apt-get update
				
			
  1. 等待更新完成,然後使用以下指令繼續安裝 vsftpd:
				
					sudo apt-get install vsftpd
				
			
  1. 系統將提示您一條確認訊息。 輸入 Y 並按 Enter 鍵繼續安裝 vsftpd 守護程序。
  1. 安裝完成後,備份原始文件,以便可以從空白設定檔開始:
				
					sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original
				
			

2. 允許來自防火牆的 FTP 流量

安裝完成後,配置系統防火牆規則以允許 Ubuntu FTP 伺服器通過網路進行通訊。您可以使用 Ubuntu Uncomplicated Firewall(UFW)完成此操作。以下是步驟:

  1. 首先使用以下命令檢查您的伺服器上是否已安裝防火牆:
				
					sudo ufw status
				
			
  1. 如果看到“ufw:command not found error”,則表示未安裝 Ubuntu 防火牆。依次運行以下命令來下載並啟用它。如果已經配置,則跳過此步驟:
				
					sudo apt-get install ufw
				
			
				
					sudo ufw enable
				
			
  1. 執行以下命令來驗證防火牆狀態:
				
					sudo ufw status
				
			
  1. 啟動後,請單獨執行以下命令以確保允許 FTP 流量:
				
					sudo ufw allow OpenSSH
				
			
				
					sudo ufw allow 20/tcp
				
			
				
					sudo ufw allow 21/tcp
				
			
				
					sudo ufw allow 990/tcp
				
			
				
					sudo ufw allow 40000:50000/tcp
				
			
  1. 再次執行以下命令以驗證您是否已正確新增新的防火牆規則:
				
					sudo ufw status
				
			

檢查 Terminal 輸出,確保打開這些連接 port 以使 FTP 伺服器正常運作:

  • 如果您希望透過 SSH 存取伺服器,則需要 OpenSSH。 有時,此選項預設為啟用。
  • 用於 FTP 流量的連接 port 20 和 21。
  • 連接port 40000:50000 保留用於稍後在設定檔中設定的被動連接埠範圍。
  • 連接port 990 啟用後允許 TLS 加密。

3. 建立使用者目錄

啟用協定通訊後,建立將使用 FTP 存取的新使用者。 為此,請執行以下命令:

				
					sudo adduser taki
				
			

將占位符替換為您想要的名稱。然後,輸入用戶密碼並填寫所有必需的詳細信息。

在配置 FTP 時,出於安全考慮,理想情況下應將其訪問限制為一個特定的目錄。出於這個原因,vsftpd 默認使用 chroot jails 將本地用戶限制在其家目錄中。

然而,vsftpd 安全性可能會阻止非 FTP 用戶將文件寫入其家目錄。為解決此問題,創建一個作為 chroot 的 FTP 目錄,其中包含一個用於傳輸文件的可寫文件夾。以下是操作步驟:

  1. 使用以下命令建立 FTP 資料夾。 相應地替換帳戶名:
				
					sudo mkdir /home/taki/ftp
				
			
  1. 然後,使用以下命令設定所有權:
				
					sudo chown nobody:nogroup /home/taki/ftp
				
			
  1. 刪除寫入權限:
				
					sudo chmod a-w /home/taki/ftp
				
			
  1. 現在,使用以下命令來驗證權限:
				
					sudo ls -la /home/taki/ftp
				
			
  1. 輸出應如下所示:
				
					total 8
				
			
				
					dr-xr-xr-x 2 nobody nogroup 4096 Oct 8 11:32 .
				
			
				
					drwxr-xr-x 3 taki  taki 4096 Oct 8 11:32 ..
				
			
  1. 接下來,建立目錄來保存檔案並分配所有權:
				
					sudo mkdir /home/taki/ftp/files
				
			
				
					sudo chown taki:taki /home/taki/ftp/files
				
			
  1. 最後,將一個測試文件添加到目錄中,我們稍後將用它來測試所有內容:
				
					echo "vsftpd sample file" | sudo tee /home/taki/ftp/files/sample.txt
				
			

4. 設定 vsftpd

接下來,配置 vsftpd 和 FTP 訪問。在這個示例中,我們將允許單個用戶使用本地 shell 賬戶進行連接。為此,vsftpd.conf 配置文件中已經設置了兩個關鍵配置。以下是具體步驟:

  1. 使用 nano 命令開啟 vsftpd 設定檔:
				
					sudo nano /etc/vsftpd.conf
				
			
  1. 檢查以下設定是否存在:
				
					# Allow anonymous FTP? (Disabled by default).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
				
			
  1. 啟用 write_enable 參數。 為此,請透過刪除井號 (#) 來取消註解:
				
					write_enable=YES
				
			
  1. 取消註解 chroot_local_user 並將值變更為 YES 以限制 FTP 使用者只能存取允許目錄中的檔案。 在該文件中,有兩個這樣的參數,您必須對這兩個參數執行相同的操作。
				
					chroot_local_user=YES
				
			
  1. 接下來,在檔案底部的 local_root 目錄路徑中新增 user_sub_token 設定。 它將把設定檔應用到目前使用者和您稍後新增的其他帳戶:
				
					user_sub_token=$USER local_root=/home/$USER/ftp
				
			
  1. 在設定檔底部指定連接 port 數量,以確保您的 FTP 伺服器可以接受大量連線。 您的防火牆規則必須允許它們:
				
					pasv_min_port=40000 pasv_max_port=50000
				
			
  1. 為了提高安全性,僅允許設定檔中指定的使用者進行FTP存取。 為此,請在底部添加以下參數。 確保將 userlist_deny 標誌設為 NO。
				
					userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO
				
			
  1. 完成後,按 Ctrl + X、YEnter 確認文件變更。
  1. 調整配置後,建立使用者清單並將您的 FTP 帳戶新增至檔案。 在終端機中執行以下命令:
				
					echo "taki" | sudo tee -a /etc/vsftpd.userlist
				
			
  1. 透過執行以下命令驗證使用者是否處於活動狀態。 終端機應輸出您新增的帳戶名,在我們的範例中為「taki」:
				
					cat /etc/vsftpd.userlist
				
			
  1. 使用以下命令重新啟動 FTP 守護程式以套用變更:
				
					sudo systemctl restart vsftpd
				
			

5. 保護 FTP 伺服器的安全

由於 FTP 預設不是加密,因此請安裝 SSL/TLS 憑證以保護檔案傳輸。 步驟如下:

  1. 為 Ubuntu FTP 伺服器頒發 SSL 憑證。 在我們的例子中,我們將使用以下指令建立一個有效期為 365 天的金鑰,並使用 2048 位元 RSA 私鑰:
				
					sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
				
			
  1. 在提示欄位中輸入相應的個人詳細資料。
  1. 建立完證書後,再次開啟 vsftpd 設定檔:
				
					sudo nano /etc/vsftpd.conf
				
			
  1. 向下捲動到文件末尾,您應該會找到這兩行以 rsa 開頭的行。 如果它們未註釋,請添加井號:
				
					# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
# rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
				
			
  1. 現在,將設定檔指向新建立的憑證。 在兩行下面新增以下目錄:
				
					rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
				
			
  1. 接下來,啟用 SSL 證書,並透過新增以下行將連線限制為僅具有活動證書的用戶端:
				
					ssl_enable=YES
				
			
  1. 然後,新增以下行以拒絕透過 SSL 的匿名連線:
				
					allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES
				
			
  1. 透過新增以下參數使伺服器能夠使用 TLS:
				
					ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=NO
				
			
  1. 接下來,停用 SSL 重複使用以防止 FTP 用戶端崩潰,並使用高加密密碼套件將金鑰長度設為 128 位元或更長。 透過新增以下行來完成此操作:
				
					require_ssl_reuse=NO

ssl_ciphers=HIGH
				
			
  1. Ctrl + X、Y Enter 儲存檔案。
  1. 最後重新啟動 vsftpd 以套用新配置:
				
					sudo systemctl restart vsftpd
				
			

您現在已經在 Ubuntu VPS 上配置了 FTP 伺服器並可以透過 SSL/TLS 協定工作。

6. 使用 FileZilla 來測試連接

最後一步是測試您的 Ubuntu FTP 伺服器是否正常且安全地運作。 您可以使用支援加密的 FTP 用戶端來執行此操作。 在本教程中,我們將使用 FileZilla。

在本機系統中下載並安裝 FileZilla FTP 用戶端後,請依照下列步驟操作:

  1. 啟動 FileZilla 並點擊右上角「檔案」下方的「網站管理員」圖示。
  1. 將出現一個新視窗。 點擊“新網站”按鈕並輸入您的 Ubuntu FTP 伺服器詳細資訊。
FileZilla
  1. 在對應欄位中輸入新建立的 Ubuntu FTP 伺服器資訊。 由於我們將其配置為使用 TLS,因此請選擇「使用基於 TLS 的明確 FTP」選項。 最終配置應如下所示:
FileZilla New Site
  1. 點擊“連線”,將出現一個要求您輸入 FTP 使用者密碼的畫面。 填寫憑證並點選「確定」。
  1. 最後,驗證您的 Ubuntu VPS FTP 伺服器的 SSL 憑證。 確認後,帶有測試檔案的根目錄應該會出現在螢幕上。

就這樣! 現在,您可以執行從電腦到 Ubuntu FTP 伺服器的各種檔案傳輸了。

結論

設定 Ubuntu FTP 伺服器可以簡化遠端伺服器和本機之間的檔案傳輸,提高開發效率。 此外,它還利用 SSL/TLS 和 TCP/IP 協定來增強安全性並確保可靠的連線。

在本教程中,我們透過六個步驟探索如何使用 vsftpd 在 Ubuntu VPS 上設定 FTP 伺服器。 這裡是一個回顧:

  1. 在 Ubuntu 伺服器上安裝 vsftpd 並備份原始設定檔。
  2. 允許 FTP 連線穿過防火牆。
  3. 建立僅供指定帳戶存取的使用者目錄。
  4. 配置 vsftpd 設定。
  5. 使用 SSL/TLS 保護 FTP 伺服器的安全性。
  6. 測試您與 FileZilla 的 FTP 連線。

在設定 FTP 之前,請記住透過 SSH 連接到您的 VPS 並建立新的超級使用者帳戶。 如果你在過程遇到困難,您可以在以下留言或是在我們會員平台發工單詢問。

TAKI Cloud 雲端主機
TAKI Cloud 雲端主機 只要470元起
TAKI Cloud 實體主機 Dedicated Server
TAKI Cloud 實體主機 只要4,500起
TAKI Cloud 中華電信 主機代管 服務
TAKI Cloud 主機代管 只要2,000元起

By taki

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *