全部產品
Search
文件中心

Elastic Compute Service:在Linux執行個體中搭建FTP伺服器

更新時間:Feb 13, 2025

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

  1. 執行以下命令,更新Yum源並安裝 vsftpd。

    sudo yum update
    sudo yum install -y vsftpd
  2. 執行以下命令,設定 vsftpd 開機自啟動。

    systemctl enable vsftpd
  3. 執行以下命令,啟動 FTP 服務。

    systemctl start vsftpd
  4. 執行以下命令,確認服務是否啟動。

    netstat -antup | grep ftp

    顯示結果如下,則說明 FTP 服務已成功啟動。

    image

    此時,vsftpd 已預設開啟匿名使用者模式,無需通過使用者名稱和密碼即可登入 FTP 伺服器。使用此方式登入 FTP 伺服器的使用者沒有修改或上傳檔案的許可權。

步驟二:配置 vsftpd

  1. 執行以下命令,為 FTP 服務建立一個 Linux 使用者,本文以 ftpuser 為例。

    useradd ftpuser
  2. 執行以下命令,設定 ftpuser 使用者的密碼。

    passwd ftpuser

    輸入密碼後請按 Enter 確認設定,密碼預設不顯示。

  3. 執行以下命令,建立 FTP 服務使用的檔案目錄,本文以 /var/ftp/test 為例。

    mkdir /var/ftp/test
  4. 執行以下命令,修改目錄許可權。

    chown -R ftpuser:ftpuser /var/ftp/test
  5. 執行以下命令,開啟 vsftpd.conf 檔案。

    vim /etc/vsftpd/vsftpd.conf
  6. 按 i 切換至編輯模式,根據實際需求選擇 FTP 模式,修改設定檔 vsftpd.conf。

    說明

    FTP 可通過主動模式和被動模式與用戶端機器進行串連並傳輸資料。由於大多數用戶端機器的防火牆設定及無法擷取真實 IP 等原因,建議您選擇被動模式搭建 FTP 服務。如下修改以設定被動模式為例。

    1. 運行以下命令,備份vsftp設定檔。

      sudo cp /etc/vsftpd/vsftpd.conf  /etc/vsftpd/vsftpd.conf.bak
    2. 修改以下配置參數,設定匿名使用者和本機使用者的登入許可權,設定指定例外使用者列表檔案的路徑,並開啟監聽 IPv4 sockets。

      anonymous_enable=NO
      local_enable=YES
      write_enable=YES
      chroot_local_user=YES
      chroot_list_enable=YES
      chroot_list_file=/etc/vsftpd/chroot_list
      listen=YES
    3. 在行首添加 #,注釋 listen_ipv6=YES 配置參數,關閉監聽 IPv6 sockets。

      #listen_ipv6=YES
    4. 添加以下配置參數,開啟被動模式,設定本機使用者登入後所在目錄,以及雲端服務器建立資料轉送可使用的連接埠範圍值。

      local_root=/var/ftp/test
      allow_writeable_chroot=YES
      #pasv_enable=YES 被動模式,pasv_enable=NO 主動模式
      pasv_enable=YES
      #請修改為您的 Linux 雲端服務器公網 IP
      pasv_address=xxx.xx.xxx.xx
      pasv_min_port=40000
      pasv_max_port=40100
      說明

      FTP服務被動模式放通範圍連接埠的原因及配置建議請參見搭建FTP網站(Windows)

  7. 按 Esc 後輸入 :wq 儲存後退出。

  8. 執行以下命令,建立並編輯 chroot_list 檔案。

    vim /etc/vsftpd/chroot_list
  9. 按 i 進入編輯模式,輸入使用者名稱,一個使用者名稱佔據一行,設定完成後按 Esc 並輸入 :wq 儲存後退出。設定的使用者將會被鎖定在主目錄,您若沒有設定例外使用者的需求,可跳過此步驟,輸入 :q 退出檔案。

    image

  10. 執行以下命令,重啟 FTP 服務。

    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 服務,本文以用戶端的檔案總管為例。

  1. 開啟用戶端的電腦,在路徑欄中訪問以下地址。如下圖所示。

    image

  2. 在彈出的登入身份視窗中輸入設定FTP使用者及密碼中已設定的使用者名稱及密碼。

  3. 成功登入後,即可上傳及下載檔案。

Ubuntu/Debian

步驟一:安裝VSFTP

  1. 運行以下命令,安裝vsftpd服務:

    # 更新apt源
    sudo apt-get update
    sudo apt-get install vsftpd
  2. 運行以下命令,備份原始設定檔。

    sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

步驟二:配置VSFTP

  1. 運行以下命令,修改vsftpd的設定檔:

    sudo vim /etc/vsftpd.conf
  2. 在設定檔中修改如下配置:

    1. 修改以下配置,配置FTP存取權限。只允許本機使用者訪問 FTP,並禁用任何匿名訪問

      anonymous_enable=NO
      local_enable=YES
    2. 修改以下配置,啟用檔案上傳。

      write_enable=YES
    3. 取消以下行配置前的注釋,使用vsftpd 通過使用 chroot jails 實現限制FTP使用者訪問目錄,並配置可訪問FTP服務使用者檔案。

      chroot_local_user=YES
      chroot_list_file=/etc/vsftpd.chroot_list
    4. 在設定檔中添加以下配置,配置FTP服務類別目錄,以及開啟允許使用者在掛載的 chroot(改變根目錄)環境中寫入。當 chroot 環境為可寫時通常會被禁止(預設)。

      local_root=/home/ftp 
      allow_writeable_chroot=YES
    5. (可選)修改以下配置,配置FTP被動模式。vsftpd 可以使用任何連接埠進行被動 FTP 串連。可為 vsftpd 可以使用的最小和最大連接埠號碼指定一個範圍。

      在設定檔中,添加以下行以允許被動 FTP 串連。

      pasv_min_port=35000
      pasv_max_port=40000
    6. 運行以下命令,重新啟動 vsftpd 以啟用配置。

      sudo systemctl restart vsftpd

步驟三:配置使用者目錄

  1. 在FTP安裝完成後,會預設為我們建立使用者名稱為ftp的使用者,預設無密碼。運行以下命令修改ftp密碼。

    sudo passwd ftp

    設定一個強密碼並跳過所有其他提示。

  2. 運行以下命令,將使用者添加到允許的FTP使用者列表中。

    echo "ftp" | sudo tee -a /etc/vsftpd.userlist
  3. 運行以下命令,建立FTP檔案目錄和授予使用者權限。

    1. 運行以下命令,建立FTP檔案夾。

      sudo mkdir /home/ftp
    2. 運行以下命令,設定檔案夾所有權。本例中賦予檔案夾讀、寫、完全控制許可權。您也可以根據自己的需求修改相應許可權。

      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 服務,本文以用戶端的檔案總管為例。

  1. 開啟用戶端的電腦,在路徑欄中訪問以下地址。如下圖所示:

    image

  2. 在彈出的登入身份視窗中輸入設定FTP使用者及密碼中已設定的使用者名稱及密碼。

  3. 成功登入後,即可上傳及下載檔案。

附錄

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

    匿名上傳檔案所屬使用者名稱