這是一篇新手向的ftp服務器安裝,
在開始安裝ftp服務器前,我們需要了解,我們需要做哪些事情?
- 了解安裝配置需要用到的基礎知識
- 確認系統環境
- 安裝ftp指令【非必須】
- 安裝vsftpd
- 設定本地登錄用戶
- 配置vsftpd本身的conf檔案
- 配置系統相關軟體的配合
1、了解基礎知識
FTP:檔案傳輸協議(File Transfer Protocol,FTP),
FTP是歷史上最悠久的檔案傳輸協議之一,在很多軟體體系中都有應用,比如說wordpress后臺更新就需要FTP服務,
FTP使用 TCP 協議傳輸而不是 UDP,
FTP使用兩類埠:控制埠21,傳輸埠,
FTP傳輸有兩類模式,被動模式(PASV)和主動模式(PORT),
在傳輸的程序中,無論是被動模式,還是主動模式,都是【客戶端】和【服務器端的21埠】交換用戶名密碼等相關資訊并確認使用什么模式傳輸,如果是主動模式,客戶端和服務器端在【服務器端的20埠】交換資料,如果是被動模式,將有服務器端確認一個或幾個自身的隨機埠,客戶端需要與服務器端的這個埠進行資料交換,
VSFTPD是廣泛使用的FTP服務器軟體,FTP命令是客戶端的操作命令,
還有一種SFTP,SFTP和FTP只是名字類似,不可簡單地理解問安全(safe)的FTP,他是ssh協議提供的檔案傳輸方式,很多云服務器自帶ssh連接便于遠程操作,所以即使你沒有成功配置FTP,可能也是可以使用SFTP傳輸的,SFTP只用22埠,
2、確認系統環境
個人配置FTP服務器使用的是阿里云的ECS服務器,虛擬主機可能不支持部分配置,但是很多虛擬主機都自帶FTP服務,
系統是Alibaba Cloud Linux 3.2104 64位,兼容Centos8的指令,如果讀者使用的是其他版本的系統,需要自行確認部分指令是否能用,
使用的軟體包管理器是DNF,這是YUM的替代版本,兼容大多數YUM的指令,軟體包管理器可以以默認路徑讓你方便地安裝、更新系統的軟體,減少因為安裝路徑的設定帶來的問題,建議初學者使用,
在進一步操作前,我們可以通過如下指令,確認你的系統是否已經安裝了相關組件:
whereis vsftpd
如果系統沒有安裝vsftpd,將會回傳
VSFTPD:
否則會回傳類似如下的目錄
vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz
這里面是三個目錄,使用空格隔開,在CENTOS8的DNF默認安裝中,/etc/vsftpd是默認安裝位置,
3、安裝ftp指令【非必須】
ftp指令可以讓你在服務器端連接自己的FTP服務器,避免了防火墻的干擾,更利于排查問題,非必須,但建議,
dnf install ftp
安裝上就可以直接使用,
鏈接服務器:
ftp XXX.XXX.XXX.XXX
XXX.XXX.XXX.XXX代表IP地址,也可以使用ftp localhost鏈接本地服務器,
退出服務器
quit
更多的內容對于新手來說并非必要,如想了解請自行搜索,
4、安裝VSFTPD
dnf install vsftpd
5、設定本地用戶
useradd xxx passwd xxx
XXX代表你取的用戶名,通過useradd添加用戶,通過passwd修改密碼
值得注意的是,通過這種方式添加的用戶為CENTOS系統的用戶,而不是vsftpd這個軟體的用戶,更改的一些設定也是針對系統用戶的,
也可以使用虛擬用戶,將虛擬用戶映射到系統用戶上,但相關設定對新手多少有點繁瑣,如需了解請搜索,
6、配置vsftpd的conf檔案
之前提及了,CENTOS8下dnf安裝,默認安裝路徑為/etc/vsftpd,vsftpd的設定檔案就在這里,
這篇文章使用被動模式鏈接,主要需要修改的引數如下(【】以及【】內的內容為相關設定的注解,請不要寫入設定檔案)
禁用PORT模式
connect_from_port_20=NO【禁用了PORT模式使用的傳輸埠】
開啟PASV模式
listen=YES listen_ipv6=NO【PASV模式會向客戶端回傳自己隨機分配的連接地址及埠,這個回傳值是一個6位的:XXX,XXX,XXX,XXX,a,b,其中前四位為IP,后兩位按著a*256+b的計算方式為埠值如果這個開啟,該值會被識別成IPV6地址,帶來復雜的情況】 pasv_enable=YES【允許PASV模式】 pasv_min_port=xxxx pasv_max_port=xxxx【規定服務器端分配的最小和最大埠號,如果不規定,服務器可能配置的埠號和其他軟體的埠重復,導致出錯,建議分配較大的埠避免沖突,但是過大的埠可能超出服務器的范圍】 pasv_addr_resolve=YES【十分重要,允許ip地址修改,】 pasv_address=XXX.XXX.XXX.XXX【十分重要,這個地址是你服務器的公網地址,PASV模式,服務器會回傳一個6位的地址和埠,如果不設定上述兩項,回傳的是私網ip,遠程連接無法找到你的地址,】 pasv_promiscuous=YES【YES關閉安全檢查,有一定風險,正常情況下服務器會檢查客戶端兩次連接的IP是否一致,如果不一致將會拒絕鏈接,】
建議修改的安全性相關設定
anonymous_enable=NO【禁止匿名用戶】 chroot_local_user=YES【禁止用戶訪問規定根目錄以外的檔案】 allow_writeable_chroot=NO
7、配置系統相關軟體的配合
設定nologin
修改passwd檔案,一般在/etc路徑下,將/bin/bash修改為/sbin/nologin,禁止你的ftp用戶名密碼直接登錄系統
修改根目錄
修改passwd檔案,把目錄地址更換成你想讓ftp用戶訪問的地址,
修改目錄權限
這部分建議專門找一篇介紹權限的書籍,我設定的755權限,
根目錄權限根據你的設定檔案,會有不同的出錯可能,
pam檔案
修改了用戶的nologin之后,需要查找系統pam.d檔案夾(一般在etc路徑下),有一條auth required pam_shells.so,當你修改成了nologin之后和這個對不上,會出錯,注釋掉,
如果你有其他設定,可能需要進一步修改這個檔案,
開放埠給外網
這一步包括兩個內容,一個是開放服務器的防火墻,另一個是可能你的服務器提供商有外部安全組,
開放服務器的防火墻
CENTOS默認安裝firewalld,如果你的系統是iptables請自行搜索,selunix也需要相關設定,但是因為較容易出錯很多人都默認關閉
systemctl status firewalld【查看firewalld是否開啟】 firewall-cmd --add-port=xxx-xxx/tcp --permanent【xxx-xxx代表設定檔案里配置的埠范圍,左小右大】 firewall-cmd --add-port=21/tcp --permanent【開放控制鏈路的21埠,如果你沒禁用PORT模式,還需要開放20埠】 firewall-cmd --reload【重新載入設定】
開放服務商的外部安全組
以阿里云為例,在控制臺-服務器-安全組,入方向做類似配置,把設定檔案里面的PASV埠范圍、控制鏈路的21埠(PORT模式沒關倍訓需要開放20埠)

8、測驗可能出現的錯誤
在服務器及遠程客戶端,通過ftp指令及ip登錄,windows可以通過資源管理器ftp://XXX,XXX,XXX,XXX(公網ip地址)登錄,可以通過cmd命令測驗,也可以使用ftp軟體,
1、如果服務器可以登錄遠程不可以,那么檢查一下防火墻的設定,
2、如果出現“227 Entering Passive Mode”的錯誤,那么就是沒有設定好pasv_addr_resolve=YES和pasv_address=XXX.XXX.XXX.XXX,服務器回傳的地址是私網地址或者錯誤的ip,客戶端無法連接上,
我暫時沒有遇到更多問題,經過如上配置使用FTP更新了自己的wordpress,如果錯漏,懇請斧正,謝謝閱讀,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/295859.html
標籤:Linux
