使用ECS快速從全新CentOS系統搭建FTP服務還是相對比較容易的。具體過程如下:
申請ECS執行個體
在本次教學場景中是一鍵完成的。實際在阿裡雲平台中需要根據需求的機器配置購買ECS執行個體,配置作業系統鏡像、網絡安全組、登入憑證(密碼/證書)後,再進行下一步操作,這裡按下不表。
遠端連接配接ECS執行個體
教學場景中的指南推薦使用系統自帶的終端工具以及OpenSSH來連接配接,實際上我們還可以使用其他優秀的第三方終端工具來遠端連接配接ECS執行個體。這裡我們采用
Xshell(該軟體對家庭使用者/測試用途免費)。
按照預設設定(也沒什麼好配置的,能配置的隻有安裝位置)安裝好後Xshell後,打開軟體,在彈出的會話視窗中點選建立按鈕,即可填寫ECS伺服器外網IP(即彈性IP)位址即可點選連接配接。

稍後Xshell會提示首次連接配接主機的連接配接公鑰确認。該提示說明本地計算機是第一次使用Xshell連接配接這台遠端伺服器,需要對主機的身份确認。這裡我們可以大膽放心信任阿裡雲的ECS,點選确認即可。
接下來會提示登入使用者名和密碼(忘記截圖了TAT),在教學場景中已在頁面上給出,實際在阿裡雲平台操作時已在購買ECS執行個體時配置好。
然後界面上即是CentOS預設的bash提示符:
說明此刻已經成功登入到遠端ECS了!
安裝FTP伺服器
vsftpd
(Very Secure FTP Daemon)是一款在Linux發行版中最受推崇的FTP伺服器。這裡我們就選擇它來搭建FTP服務。
安裝 vsftpd
vsftpd
在Xshell中右鍵粘貼(注意不能使用
Ctrl+V
粘貼,Xshell中的粘貼快捷鍵是
Shift+Insert
,比較麻煩,還是右鍵粘貼快一些)
yum install -y vsftpd
傳回如下所示文字時,說明安裝成功!
Installed:
vsftpd.x86_64 0:3.0.2-27.el7
Complete!
啟動FTP服務并設定開機自啟動
注:代碼中從
#
開始至這一行行末都是注釋,可以不複制不執行。
# 設定FTP服務開機自啟動
systemctl enable vsftpd.service
# 啟動FTP服務
systemctl start vsftpd.service
# 檢視FTP服務監聽的端口
netstat -antup | grep ftp
如果可以看到出現如下内容,表示FTP服務已啟動,監聽的端口号為21。
tcp6 0 0 :::21 :::* LISTEN 1443/vsftpd
此時,vsftpd預設已開啟匿名通路功能,無需輸入使用者名密碼即可登入FTP伺服器,但沒有修改或上傳檔案的權限。是以下一步需要添加修改或上傳檔案權限。
配置FTP伺服器權限
vsftpd
支援匿名通路模式和本地使用者模式兩種通路方式。
匿名通路模式下任何使用者都可以通路搭建的FTP服務。
本地使用者模式下隻支援添加的本地使用者通路搭建的FTP服務。
匿名使用者模式
首先需要修改配置檔案
vsftpd.conf
,這裡直接使用CentOS自帶的vim指令行編輯器編輯配置檔案
vim /etc/vsftpd/vsftpd.conf
按
i
鍵進入編輯模式,将匿名上傳權限配置
anon_upload_enable=YES
這一行開頭的注釋符
#
删除。随後按
ESC
鍵退出編輯模式,輸入
:wq
儲存并退出vim編輯器。
然後使用下面的目錄修改預設ftp根目錄路徑
/var/ftp/pub
的讀寫權限:
chmod o+w /var/ftp/pub/
最後重新開機FTP服務:
systemctl restart vsftpd.service
注:實測這裡重新開機FTP服務後不能馬上通路,需要等待個30秒左右再通路才能進入,否則連接配接不上。
本地使用者模式
首先為FTP服務建立一個Linux使用者
ftptest
,供FTP登入使用,如果需要其他使用者名可以自行修改指令中的
ftptest
:
adduser ftptest
為
ftptest
使用者設定密碼:
passwd ftptest
此時需要輸入兩次密碼(回車确認密碼)(又雙叒忘記截圖了TAT),如果密碼太簡單可能會提示
BAD PASSWORD
,這裡隻是測試問題不大,實際生産實踐中建議設定複雜一些的密碼,且盡量禁止FTP被不必要的使用者通路。
接下來,建立一個供
ftptest
使用者使用的檔案目錄并轉移擁有權。
mkdir /var/ftp/test
chown -R ftptest:ftptest /var/ftp/test
然後修改FTP配置檔案
vsftpd.conf
。下面提供兩種配置模式,如果沒有特殊需要的話建議選擇被動模式,以防止連接配接建立後無法成功傳輸資料,兩個模式的具體差別請另行百度。
A. 主動模式版本
# 禁止匿名登入FTP伺服器
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf
# 監聽IPv4 sockets
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf
# 關閉監聽IPv6 sockets
sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf
# 全部使用者被限制在主目錄
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
B.被動模式(推薦)
# 禁止匿名登入FTP伺服器
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf
# 監聽IPv4 sockets
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf
# 關閉監聽IPv6 sockets
sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf
# 全部使用者被限制在主目錄
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
#【需要修改指令】本教程中為ECS伺服器彈性IP
echo "pasv_address=<FTP伺服器公網IP位址>" >> /etc/vsftpd/vsftpd.conf
# 設定被動模式下,建立資料傳輸可使用的端口範圍的最小值
echo "pasv_min_port=20" >> /etc/vsftpd/vsftpd.conf
# 設定被動模式下,建立資料傳輸可使用的端口範圍的最大值
echo "pasv_max_port=21" >> /etc/vsftpd/vsftpd.conf
然後,使用vim編輯
chroot_list
檔案,添加例外使用者名單。此名單中的使用者不會被鎖定在主目錄,可以通路其他目錄。
vim /etc/vsftpd/chroot_list
說明:沒有例外使用者時,也必須建立
chroot_list
檔案,内容可為空,可以直接使用下面的指令建立空檔案:
touch /etc/vsftpd/chroot_list
最後重新開機FTP服務。
systemctl restart vsftpd.service
用戶端測試
FTP用戶端、Windows指令行工具或浏覽器均可用來測試FTP伺服器。這裡以浏覽器為例:
- 打開Chrom浏覽器,在位址欄中輸入
,FTP伺服器公網IP位址為ECS伺服器的彈性IP位址。例如:ftp://<FTP伺服器公網IP位址>:FTP端口
。當然,由于本文中未修改FTP預設端口,是以不加端口号也是可以的,即ftp://139.0.0.1:21
ftp://139.0.0.1
- 在彈出的對話框中,輸入之前設定好的使用者名和密碼。
- 成功界面如下,此時可對FTP檔案進行相應權限的操作。
說明:使用浏覽器通路FTP伺服器出錯時,建議您清除浏覽器緩存後再嘗試。