天天看點

Day1:體驗ECS搭建FTP全流程

使用ECS快速從全新CentOS系統搭建FTP服務還是相對比較容易的。具體過程如下:

申請ECS執行個體

在本次教學場景中是一鍵完成的。實際在阿裡雲平台中需要根據需求的機器配置購買ECS執行個體,配置作業系統鏡像、網絡安全組、登入憑證(密碼/證書)後,再進行下一步操作,這裡按下不表。

遠端連接配接ECS執行個體

教學場景中的指南推薦使用系統自帶的終端工具以及OpenSSH來連接配接,實際上我們還可以使用其他優秀的第三方終端工具來遠端連接配接ECS執行個體。這裡我們采用

Xshell

(該軟體對家庭使用者/測試用途免費)。

按照預設設定(也沒什麼好配置的,能配置的隻有安裝位置)安裝好後Xshell後,打開軟體,在彈出的會話視窗中點選建立按鈕,即可填寫ECS伺服器外網IP(即彈性IP)位址即可點選連接配接。

Day1:體驗ECS搭建FTP全流程
Day1:體驗ECS搭建FTP全流程

稍後Xshell會提示首次連接配接主機的連接配接公鑰确認。該提示說明本地計算機是第一次使用Xshell連接配接這台遠端伺服器,需要對主機的身份确認。這裡我們可以大膽放心信任阿裡雲的ECS,點選确認即可。

Day1:體驗ECS搭建FTP全流程

接下來會提示登入使用者名和密碼(忘記截圖了TAT),在教學場景中已在頁面上給出,實際在阿裡雲平台操作時已在購買ECS執行個體時配置好。

Day1:體驗ECS搭建FTP全流程

然後界面上即是CentOS預設的bash提示符:

Day1:體驗ECS搭建FTP全流程

說明此刻已經成功登入到遠端ECS了!

安裝FTP伺服器

vsftpd

(Very Secure FTP Daemon)是一款在Linux發行版中最受推崇的FTP伺服器。這裡我們就選擇它來搭建FTP服務。

安裝

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伺服器。這裡以浏覽器為例:

  1. 打開Chrom浏覽器,在位址欄中輸入

    ftp://<FTP伺服器公網IP位址>:FTP端口

    ,FTP伺服器公網IP位址為ECS伺服器的彈性IP位址。例如:

    ftp://139.0.0.1:21

    。當然,由于本文中未修改FTP預設端口,是以不加端口号也是可以的,即

    ftp://139.0.0.1

  2. 在彈出的對話框中,輸入之前設定好的使用者名和密碼。
  3. 成功界面如下,此時可對FTP檔案進行相應權限的操作。
Day1:體驗ECS搭建FTP全流程

說明:使用浏覽器通路FTP伺服器出錯時,建議您清除浏覽器緩存後再嘗試。