vsftpd(very secure FTP daemon)是一個廣泛使用的、開源的FTP伺服器軟體,以其高效能、高安全性和穩定性著稱,支援多種FTP相關協議,包括FTP、SFTP(通過SSH)、TLS/SSL加密的FTP等。本文介紹如何在Linux系統的ECS執行個體上安裝並配置vsftpd。
快速部署
您可以單擊一鍵運行進入Terraform Explorer查看並執行Terraform代碼,從而實現自動化地在ECS執行個體中搭建FTP網站。
準備資源
已建立一台基礎ECS執行個體,並滿足以下配置。如果您還未建立,請參見自訂購買執行個體。
作業系統:Alibaba Cloud Linux 3 / 2、CentOS 7.x 64位、Ubuntu、Debian。
IP地址:執行個體已指派固定公網IP地址或綁定Elastic IP Address(EIP)。具體操作,請參見Elastic IP Address。
VSFTP簡介
vsftpd(Very Secure FTP Daemon)是一個開源的FTP伺服器軟體,專為UNIX和Linux系統設計。其主要特點包括:
安全性高:vsftpd經過嚴格的安全審計,採用多種安全機制,能有效防止常見的攻擊和漏洞。
效能優越:具備高效能的檔案傳輸能力,支援大並發使用者同時串連。
配置簡單:提供靈活且易於理解的配置選項,適合各種使用者需求。
支援IPv6:對新一代網路通訊協定提供友好的支援。
搭建VSFTP服務
Alibaba Cloud Linux 3、2/CentOS 7.x
步驟一:安裝vsftpd
運行以下命令,更新系統組件並安裝
vsftpd服務。sudo yum update -y sudo yum install vsftpd -y運行以下命令,啟動 FTP 服務並設定開機自啟動。
sudo systemctl start vsftpd sudo systemctl enable vsftpd運行以下命令,確認服務是否啟動。
netstat -antup | grep ftp顯示結果如下,則說明 FTP 服務已成功啟動。

此時,vsftpd 已預設開啟匿名使用者模式,無需通過使用者名稱和密碼即可登入 FTP 伺服器。使用此方式登入 FTP 伺服器的使用者沒有修改或上傳檔案的許可權。
步驟二:配置 vsftpd
運行以下命令,建立FTP服務專用使用者並配置密碼,本文中以
ftpuser為例。sudo useradd -d /data/ftp -s /sbin/nologin ftpuser # 指定家目錄並禁用Shell sudo passwd ftpuser運行以下命令,建立ftp服務檔案夾,並配置目錄許可權。
sudo mkdir -p /data/ftp # 建立自訂儲存目錄 sudo chown ftpuser:ftpuser /data/ftp sudo chmod 750 /data/ftp # 許可權需滿足755或750編輯
vsftp設定檔。說明FTP 可通過主動模式和被動模式與用戶端機器進行串連並傳輸資料。由於大多數用戶端機器的防火牆設定及無法擷取真實 IP 等原因,建議您選擇被動模式搭建 FTP 服務。如下修改以設定被動模式為例。
運行以下命令,備份
vsftp設定檔。sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak運行以下命令,修改設定檔。
sudo vim /etc/vsftpd/vsftpd.conf修改FTP服務基礎安全配置。
listen=YES # 開啟ipv4監聽 anonymous_enable=NO # 禁止匿名訪問 local_enable=YES # 啟用本機使用者登入 write_enable=YES # 允許檔案上傳 chroot_local_user=YES # 鎖定使用者到主目錄 allow_writeable_chroot=YES # 解決chroot寫入錯誤在設定檔末尾添加被動模式相關配置。
pasv_enable=YES # 啟用被動模式 pasv_min_port=40000 # 被動連接埠範圍下限 pasv_max_port=40100 # 被動連接埠範圍上限 pasv_address=公網IP地址 # 必須設定為伺服器公網IP
運行以下命令,重啟
vsftpd服務。sudo systemctl restart vsftpd
步驟三:設定安全性群組
完成FTP服務搭建後,您需要根據實際使用的 FTP 模式給 Linux 雲端服務器放通入站規則,詳情請參見添加安全性群組規則。
大多數用戶端機器在區域網路中,其 IP 位址經過了轉換。如果您選擇使用 FTP 主動模式,請確保用戶端機器獲得了其真實的 IP 位址,否則可能會導致用戶端無法成功登入 FTP 伺服器。確保正確配置有助於避免串連問題,從而提高 FTP 服務的穩定性和可用性。
主動模式:放通連接埠21。
被動模式:放通連接埠21,及設定檔 /etc/vsftpd/vsftpd.conf 中設定的 pasv_min_port 到 pasv_max_port 之間的所有連接埠,本文放通連接埠為40000-40100。FTP服務被動模式放通範圍連接埠的原因及配置建議請參見FTP被動模式連接埠配置建議。
步驟四:驗證FTP服務
您可通過 FTP 用戶端軟體、瀏覽器或檔案總管等工具驗證 FTP 服務,本文以用戶端的檔案總管為例。
本地串連測試。
運行以下命令,進行本機串連測試。
ftp ftpuser@localhost控制台得到
Login successful則表示串連成功。
用戶端串連測試。
開啟用戶端的電腦,在路徑欄中訪問以下地址。如下圖所示。

在彈出的登入身份視窗中輸入FTP使用者與密碼。成功登入後,即可上傳及下載檔案。
Ubuntu/Debian
步驟一:安裝VSFTP
運行以下命令,更新系統組件並安裝
vsftpd服務。sudo apt update && sudo apt upgrade -y sudo apt install vsftpd -y運行以下命令,啟動
vsftpd服務並設定開機自啟。sudo systemctl start vsftpd sudo systemctl enable vsftpd
步驟二:配置VSFTP
運行以下命令,建立專用FTP使用者。
sudo useradd -m -s /bin/bash ftpuser # 建立使用者並自動產生主目錄 sudo passwd ftpuser # 設定使用者密碼(建議使用強密碼)運行以下命令,建立檔案儲存體目錄並配置許可權。
sudo mkdir /home/ftpuser/ftp-files sudo chown ftpuser:ftpuser /home/ftpuser/ftp-files sudo chmod 755 /home/ftpuser/ftp-files運行以下命令,備份原始設定檔。
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak運行以下命令,編輯設定檔。
sudo nano /etc/vsftpd.conf修改以下配置內容:
# 基礎配置 listen=YES anonymous_enable=NO # 禁止匿名訪問 local_enable=YES # 允許本機使用者登入 write_enable=YES # 啟用寫入許可權 chroot_local_user=YES # 鎖定使用者在主目錄在配置末尾添加以下配置:
allow_writeable_chroot=YES # 允許chroot目錄寫入 local_root=/home/ftpuser/ftp-files # 指定ftp使用者根目錄 # 被動模式配置(解決外網串連問題) pasv_enable=YES pasv_address=xx.xx.xx.xx # 替換為您的公網IP pasv_min_port=40000 pasv_max_port=40100運行以下命令,重啟FTP服務。
sudo systemctl restart vsftpd在FTP安裝完成後,會預設建立使用者名稱為ftp的使用者,預設無密碼。運行以下命令修改ftp密碼。
sudo passwd ftp設定一個強密碼並跳過所有其他提示。
將使用者添加到允許的FTP使用者列表中。
echo "ftp" | sudo tee -a /etc/vsftpd.userlist建立FTP檔案目錄並授予使用者權限。
建立FTP檔案夾。
sudo mkdir /home/ftp設定檔案夾所有權。
本例中賦予檔案夾讀、寫、完全控制許可權。可以根據需求修改相應許可權。
sudo chmod 777 /home/ftp
步驟三:設定安全性群組
完成FTP服務搭建後,您需要根據實際使用的 FTP 模式給 Linux 雲端服務器放通入站規則,詳情請參見添加安全性群組規則。
大多數用戶端機器在區域網路中,其 IP 位址經過了轉換。如果您選擇使用 FTP 主動模式,請確保用戶端機器獲得了其真實的 IP 位址,否則可能會導致用戶端無法成功登入 FTP 伺服器。確保正確配置有助於避免串連問題,從而提高 FTP 服務的穩定性和可用性。
主動模式:放通連接埠21。
被動模式:放通連接埠21,及設定檔 /etc/vsftpd/vsftpd.conf 中設定的 pasv_min_port 到 pasv_max_port 之間的所有連接埠。FTP服務被動模式放通範圍連接埠的原因及配置建議請參見搭建FTP網站(Windows)。
步驟四:驗證FTP服務
您可通過 FTP 用戶端軟體、瀏覽器或檔案總管等工具驗證 FTP 服務,本文以用戶端的檔案總管為例。
本地串連測試。
運行以下命令,進行本機串連測試。
ftp ftpuser@localhost控制台得到
Login successful則表示串連成功。
用戶端串連測試。
開啟用戶端的電腦,在路徑欄中訪問以下地址。如下圖所示。

在彈出的登入身份視窗中輸入FTP使用者與密碼。成功登入後,即可上傳及下載檔案。
典型錯誤對照表
現象 | 解決方案 |
| 檢查公網IP綁定+防火牆雙端允許存取 |
| 修正目錄許可權為755 |
僅能列出空目錄 | 檢查 |
| 執行 |
被動模式連線逾時 | 檢查防火牆規則和pasv_address設定 |
無法上傳檔案 | 驗證目錄許可權是否為755/750 |
附錄
vsftp設定檔及參數說明
/etc/vsftpd目錄下檔案說明如下:
/etc/vsftpd/vsftpd.conf是vsftpd的核心設定檔。/etc/vsftpd/ftpusers是黑名單檔案,此檔案中的使用者不允許訪問FTP伺服器。/etc/vsftpd/user_list是白名單檔案,此檔案中的使用者允許訪問FTP伺服器。
vsftpd.conf設定檔參數說明如下:
使用者登入控制參數說明如下表所示。
參數
說明
anonymous_enable=YES
接受匿名使用者
no_anon_password=YES
匿名使用者login時不詢問口令
anon_root=(none)
匿名使用者主目錄
local_enable=YES
接受本機使用者
local_root=(none)
本機使用者主目錄
使用者權限控制參數說明如下表所示。
參數
說明
write_enable=YES
可以上傳檔案(全域控制)
local_umask=022
本機使用者上傳的檔案許可權
file_open_mode=0666
上傳檔案的許可權配合umask使用
anon_upload_enable=NO
匿名使用者可以上傳檔案
anon_mkdir_write_enable=NO
匿名使用者可以建目錄
anon_other_write_enable=NO
匿名使用者修改刪除
chown_username=lightwiter
匿名上傳檔案所屬使用者名稱