開發與維運

基於ECS搭建FTP服務

1、創建資源

創建 ecs 服務器,查看實驗中所需的資源信息,例如:IP 地址、用戶名、密碼等。

2、連接 ECS 雲服務器

1、打開系統自帶的終端工具,我這裡用的是 Windows:cmd

Windows 用戶請檢查系統中是否安裝有 ssh 工具。檢查方法:

  1. 在終端中輸入命令 ssh -V。
  2. 出現如下結果說明已安裝。

    ![](https://ucc.alicdn.com/pic/developer-ecology/200bd0f97d254778a2a509abcc7d9ab0.png)
    
  3. 否則請下載安裝 OpenSSH

2、在終端中輸入連接命令:ssh 用戶 @彈性 ip

登錄成功後會顯示:

3、安裝 vsftpd

  1. 運行以下命令安裝 vsftpd。
yum install -y vsftpd

返回如下圖所示界面時,表示安裝成功。

  1. 運行以下命令設置 FTP 服務開機自啟動。
systemctl enable vsftpd.service
  1. 啟動 FTP 服務。
systemctl start vsftpd.service
  1. 運行以下命令查看 FTP 服務監聽的端口。
netstat -antup | grep ftp

出現如下圖所示界面,表示 FTP 服務已啟動,監聽的端口號為 21。此時,vsftpd 默認已開啟匿名訪問功能,您無需輸入用戶名密碼即可登錄 FTP 服務器,但沒有修改或上傳文件的權限。

4、配置 vsftpd

vsftpd(very secure FTP daemon)是一款在 Linux 發行版中最受推崇的 FTP 服務器。vsftpd 支持匿名訪問和本地用戶模式兩種訪問方式。匿名訪問方式任何用戶都可以訪問搭建的 FTP 服務;本地用戶模式只支持添加的本地用戶訪問搭建的 FTP 服務,我在這裡使用的是本地用戶模式。

  1. 為 FTP 服務創建一個 Linux 用戶。
adduser ftptest

為用戶設置密碼。

passwd ftptest

  1. 創建一個供 FTP 服務使用的文件目錄。
mkdir /var/ftp/test
  1. 更改 / var/ftp/test 目錄的擁有者為 ftptest。
chown -R ftptest:ftptest /var/ftp/test
  1. 修改 vsftpd.conf 配置文件。

配置 FTP 為主動模式請執行如下命令:

sed -i 's/anonymous\_enable=YES/anonymous\_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登錄FTP服務器 
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #監聽IPv4 sockets 
sed -i 's/listen\_ipv6=YES/#listen\_ipv6=YES/' /etc/vsftpd/vsftpd.conf #關閉監聽IPv6 sockets 
sed -i 's/#chroot\_local\_user=YES/chroot\_local\_user=YES/' /etc/vsftpd/vsftpd.conf #全部用戶被限制在主目錄 
sed -i 's/#chroot\_list\_enable=YES/chroot\_list\_enable=YES/' /etc/vsftpd/vsftpd.conf #啟用例外用戶名單 
sed -i 's/#chroot\_list\_file=/chroot\_list\_file=/' /etc/vsftpd/vsftpd.conf #指定例外用戶列表文件,列表中的用戶不被鎖定在主目錄 
echo "allow\_writeable\_chroot=YES" >> /etc/vsftpd/vsftpd.conf 
echo "local\_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #設置本地用戶登錄後所在的目錄

配置 FTP 為被動模式請執行如下命令:

sed -i 's/anonymous\_enable=YES/anonymous\_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登錄FTP服務器 
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #監聽IPv4 sockets 
sed -i 's/listen\_ipv6=YES/#listen\_ipv6=YES/' /etc/vsftpd/vsftpd.conf #關閉監聽IPv6 sockets 
sed -i 's/#chroot\_local\_user=YES/chroot\_local\_user=YES/' /etc/vsftpd/vsftpd.conf #全部用戶被限制在主目錄 
sed -i 's/#chroot\_list\_enable=YES/chroot\_list\_enable=YES/' /etc/vsftpd/vsftpd.conf #啟用例外用戶名單 
sed -i 's/#chroot\_list\_file=/chroot\_list\_file=/' /etc/vsftpd/vsftpd.conf #指定例外用戶列表文件,列表中的用戶不被鎖定在主目錄 
echo "allow\_writeable\_chroot=YES" >> /etc/vsftpd/vsftpd.conf 
echo "local\_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #設置本地用戶登錄後所在的目錄 
 
echo "pasv\_enable=YES" >> /etc/vsftpd/vsftpd.conf #開啟被動模式 
echo "pasv\_address=<FTP服務器公網IP地址>" >> /etc/vsftpd/vsftpd.conf #本教程中為ECS服務器彈性IP 
echo "pasv\_min\_port=20" >> /etc/vsftpd/vsftpd.conf #設置被動模式下,建立數據傳輸可使用的端口範圍的最小值 
echo "pasv\_max\_port=21" >> /etc/vsftpd/vsftpd.conf #設置被動模式下,建立數據傳輸可使用的端口範圍的最大值
  1. 在 / etc/vsftpd 目錄下創建 chroot_list 文件,並在文件中寫入例外用戶名單。
#使用vim命令編輯chroot\_list文件,添加例外用戶名單。此名單中的用戶不會被鎖定在主目錄,可以訪問其他目錄。
vim /etc/vsftpd/chroot\_list

說明: 沒有例外用戶時,也必須創建 chroot_list 文件,內容可為空。

  1. 重啟 FTP 服務。
systemctl restart vsftpd.service

5、客戶端測試

FTP 客戶端、Windows 命令行工具或瀏覽器均可用來測試 FTP 服務器。(此步驟僅適用於本地用戶,匿名模式無需進行測試操作)

說明:使用瀏覽器訪問 FTP 服務器出錯時,建議您清除瀏覽器緩存後再嘗試。

  1. 打開 Chrom 瀏覽器,在地址欄中輸入 ftp://:FTP 端口,FTP 服務器公網 IP 地址為 ECS 服務器的彈性 IP 地址。
  2. 在彈出的對話框中,輸入創建的用戶名和密碼。
  3. 登錄成功界面如下,此時可對 FTP 文件進行相應權限的操作。

Leave a Reply

Your email address will not be published. Required fields are marked *