小白搭建ftp伺服器(vsftpd centos8.2)

放假了O發表於2020-11-26

寫在最前

伺服器要求:本人使用阿里雲ECS
系統:centos 8.2
使用前需要在阿里雲安全組開啟埠

  • 需要開啟的埠號為:20/21
  • 配置方向:入方向
  • 協議型別:TCP
  • 授權物件:預設值

安裝vsftpd

因為我用的是centos系統,所以在安裝時使用的是yum命令,如果是ubuntu或者Debian系統,請使用apt-get命令。

yum install vsftpd
  • !使用yum命令需要使用管理員賬戶,請切換至root後再安裝

配置vsftpd

!在修改配置前,請將原始配置檔案備份一份

vsftpd相關的配置資訊都被存放在 “/etc/vsftpd” 目錄下,主配置檔案為:vsftpd.conf
第一次開啟vsftpd.conf,需要找到“Listen=NO”,將其改為YES,修改此項是為了開啟vsftpd的ipv4監聽,這樣來自客戶端的請求才能被接收。接著找到“listen——ipv6=YES”,將其改為NO,關閉IPV6監聽。
接著開啟這兩項:
local_enable=YES #本地開關
write_enable=YES #寫開關
開啟後使用以下命令重啟ftp服務:

systemctl start vsftpd.service

執行以下命令檢視FTP服務監聽的埠。

netstat -antup | grep ftp

出現如下圖所示介面,表示FTP服務已啟動,監聽的埠號為 21。在這裡插入圖片描述

建立使用者

  • 如果由本地使用者,可以忽略,本步驟只限於測試使用

使用useradd命令來新增使用者,passwd命令建立密碼

建立目錄

ftp的資料夾在“ /var/ftp”資料夾下,建立一個資料夾並將其授權給使用者。涉及到mkdir和chown命令的使用

開啟一些其他測試項

#
# 1. 監聽相關
#
listen=<YES/NO>                     # YES: 服務以獨立執行方式執行; NO: 執行在 xinetd 內。 預設為 YES
listen_address=<ip address>         # 服務監聽地址, 如果有多個網路卡, 需要將服務繫結到指定 IP 地址
listen_port=<port>                  # 服務監聽埠, 預設為 21

#
# 2. 匿名使用者相關
#
anonymous_enable=<YES/NO>           # 是否允許匿名使用者訪問, 預設 NO
anon_mkdir_write_enable=<YES/NO>    # 是否允許匿名使用者建立資料夾, 預設 NO
anon_other_write_enable=<YES/NO>    # 是否允許匿名使用者其他的寫許可權, 建立檔案、重新命名、刪除檔案等許可權(預設為 NO, 基於安全性考慮這個許可權一般不開啟)
anon_upload_enable=<YES/NO>         # 是否允許匿名使用者上傳, 預設 NO
anon_umask=<nnn>                    # 匿名使用者上傳的檔案的生成掩碼, 預設為077
anon_max_rate=<n>                   # 匿名使用者的最大傳輸速率, 單位為 Byte/s, 值為 0 表示不限制
anon_world_readable_only=<YES/NO>   # 是否允許匿名使用者只讀瀏覽

#
# 3. 本地使用者(Linux標準系統使用者)相關
#
local_enable=<YES/NO>               # 是否支援本地使用者帳號訪問
write_enable=<YES/NO>               # 是否開放本地使用者的寫許可權
local_umask=<nnn>                   # 本地使用者上傳的檔案的生成掩碼, 預設為077
local_max_rate=<n>                  # 本地使用者最大的傳輸速率, 單位為 Byte/s,值為 0 表示不限制
local_root=<file>                   # 本地使用者登陸後的目錄,預設為 本地使用者 的 主目錄

chroot_local_user=<YES/NO>          # 本地使用者是否可以執行 chroot, 預設為 NO
chroot_list_enable=<YES/NO>         # 是否只有指定的使用者才能執行 chroot, 預設為 NO
chroot_list_file=<filename>         # 當 chroot_local_user=NO 且 chroot_list_enable=YES 時,
                                    # 只有 filename 檔案內指定的使用者(每行一個使用者名稱)可以執行 chroot,
                                    # 預設值為 /etc/vsftpd.chroot_list

#
# 4. 本地使用者 黑/白名單管理
#
userlist_enable=<YES/NO>    # 是否啟用 userlist_file 白/黑名單使用者列表, 預設為 NO

userlist_deny=<YES/NO>      # 當 userlist_enable=YES(即啟用 userlist_file )時, 則該欄位才有效。
                            # userlist_deny=YES: userlist_file 為 黑名單, 即在該檔案內的使用者均不可登入, 其他使用者可以登入
                            # userlist_deny=NO:  userlist_file 為 白名單, 即在該檔案內的使用者才可以登入, 其他使用者均不可登入

userlist_file=<filename>    # 黑/白名單使用者列表檔案(每行一個使用者名稱), 
                            # 是黑名單還是白名單, 根據 userlist_deny 的值決定,
                            # 預設值為 /etc/vsftpd.user_list

#
# 5. 連線相關
#
ftpd_banner=<message>               # 客戶端連線伺服器後顯示的歡迎資訊
connect_timeout=<n>                 # 遠端客戶端響應埠資料連線超時時間, 單位為秒, 預設 60
accept_connection_timeout=<n>       # 空閒的資料連線超時時間, 單位為秒, 預設 120
data_connection_timeout=<n>         # 空閒的使用者會話超時時間, 單位為秒, 預設 300
max_clients=<n>                     # 在獨立模式執行時, 最大連線數, 0 表示無限制
max_per_ip=<n>                      # 在獨立模式執行時, 每 IP 的最大連線數, 0表示無限制

根據自己的需要開啟或關閉對應的功能
檔案中沒有註釋的內容,可以在檔案末尾新增

  • 在每次修改配置檔案後,需要使用以下命令重啟服務
systemctl restart vsftpd.service

ftp客戶端測試

本地安裝ftp客戶端,在終端輸入

ftp <公網IP><埠號>

未開啟匿名使用者請輸入本機使用者使用者名稱及密碼
開啟匿名使用者後輸入“anonymous”為使用者名稱,密碼可預設或者輸入郵箱即可登入
相關的許可權在上文,本部分不再贅述

當ftp伺服器出現問題簡單排障

先登入伺服器,通過

systemctl status vsftpd.service

檢查ftp服務是否已經成功啟動

如果客戶端無法連線到伺服器,可以使用telnet直接建立客戶端到指定伺服器埠的TCP連結

telnet <公網IP> <埠號>

通過tcpdump抓包也可以看到此時是否存在連結
通過natstat命令檢視埠是否開放,是否處在監聽狀態

ftp客戶端的使用

PUT <要上傳的檔案的絕對地址> <要上傳的位置>
GET <要下載的檔案位置> <下載的位置>

相關文章