1. 程式人生 > 其它 >Linux下搭建FTP伺服器

Linux下搭建FTP伺服器

一、基本安裝

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

2.執行以下命令開啟及檢視etc/vsftpd
cd /etc/vsftpd
ls
說明:
/etc/vsftpd/vsftpd.conf 是核心配置檔案。
/etc/vsftpd/ftpusers 是黑名單檔案,此檔案裡的使用者不允許訪問 FTP 伺服器。
/etc/vsftpd/user_list 是白名單檔案,是允許訪問 FTP 伺服器的使用者列表。
/etc/vsftpd/vsftpd_conf_migrate.sh 是vsftpd操作的一些變數和設定
備註:使用命令 rpm -ql vsftpd 可列出vsftpd中包含的檔案

3.執行以下命令設定開機自啟動。
systemctl enable vsftpd

4.執行以下命令啟動 FTP 服務。
systemctl start vsftpd

5.執行以下命令檢視 FTP 服務埠。
netstat -antup | grep ftp

7.修改/etc/vsftpd/vsftpd.conf
a.執行vim /etc/vsftpd/vsftpd.conf。
b.按鍵 “i” 進入編輯模式。
c.將是否允許匿名登入 FTP 的引數修改為anonymous enable=NO。
d.將是否允許本地使用者登入 FTP 的引數修改為local_enable=YES。
e.按鍵 “Esc” 退出編輯模式,然後按鍵“:wq” 儲存並退出檔案。
f.執行命令 cat /etc/vsftpd/vsftpd.conf 檢視配置檔案內容。

二、基本配置

完成vsftpd安裝後發現無法遠端連線,仍需要完成以下配置。

原因分析:

FTP連線方式分為:主動模式和被動模式。預設為被動模式。

如果為被動模式,伺服器端必須監聽至少一個額外的被動模式埠。所以,若只開通20和21埠是不夠的,需要另外配置入站埠。

以下以阿里雲伺服器為例:

在阿里雲安全組中,開啟8800/8899,20/21 埠 ,也可自定義(後面配置需要用到),僅做參考。

備註參考資訊:

FTP的連線一般是有兩個連線的,一個是客戶程和伺服器傳輸命令的,另一個是資料傳送的連線。FTP服務程式一般會支援兩種不同的模式,一種是Port模式,一種是Passive模式(Pasv Mode),我先說說這兩種不同模式連線方式的分別。
先假設客戶端為C,服務端為S.
Port模式:
當客戶端C向服務端S連線後,使用的是Port模式,那麼客戶端C會發送一條命令告訴服務端S(客戶端C在本地打開了一個埠N在等著你進行資料連線),當服務端S收到這個Port命令後 就會向客戶端開啟的那個埠N進行連線,這種資料連線就生成了。
Pasv模式:

當客戶端C向服務端S連線後,服務端S會發資訊給客戶端C,這個資訊是(服務端S在本地打開了一個埠M,你現在去連線我吧),當客戶端C收到這個資訊後,就可以向服務端S的M埠進行連線,連線成功後,資料連線也建立了。

新增配置資訊 修改配置檔案 vim /etc/vsftpd/vsftpd.conf

在檔案末尾新增:
pasv_enable=YES
pasv_min_port=8800
pasv_max_port=8899

解釋:
8800/8899 為上面安全組新增的埠號
pasv_enable=YES|NO
YES,允許資料傳輸時使用PASV模式。NO,不允許使用PASV模式。預設值為YES。
pasv_min_port=port number
pasv_max_port=port number

設定在PASV模式下,建立資料傳輸所可以使用port範圍的下界和上界,0 表示任意。預設值為0。把埠範圍設在比較高的一段範圍內,比如50000-60000,將有助於安全性的提高。

完成以上配置,基本可以實現遠端連線FTP。對了,配置完成記得重啟伺服器systemctl restart vsftpd

三、配置 vsftpd 限制 FTP 賬戶訪問其它目錄

使用 vsftpd 搭建 FTP 服務,可以配置使用者登入後,限制訪問其它的目錄,只能進它的主目錄。 配置方法如下:

1、開啟 vsftp 的配置檔案 vim /etc/vsftpd/vsftpd.conf 找到 chroot Chroot_local_user
設定所有的本地使用者都執行 chroot chroot_local_user=yes (本地所有帳戶都只能在自家目錄)

2、設定指定使用者執行 chroot
找到並修改 chroot_list_enable=yes

3、chroot_list_file=/ 任意指定的路徑 /chroot_list (檔案中的名單可以呼叫)
注意:vsftpd.chroot_list 是沒有建立的需要自己建立。若不想限制個別使用者,將使用者名稱新增到vsftpd.chroot_list檔案中,每個使用者名稱一行

4、在檔案末尾新增

allow_writeable_chroot=YES #對vsftpd有用,否則,因home目錄許可權為root許可權而無法登入

5、為 /home/ftptest 新增許可權

6.重啟伺服器

systemctl restart vsftpd

四、vsftpd修改預設埠

1、編輯/etc/vsftpd/vsftpd.conf 檔案,在該配置檔案末尾新增此行:listen_port=6709

2、編輯/etc/services 檔案,將其中的
ftp 21/tcp 改為 ftp 6709/tcp ,
ftp 21/udp 改為 ftp 6709/udp

3、重新啟動vsftpd 服務。
4、執行命令 netstat -tnulp | grep vsftpd
可以檢視到現在系統現監聽的vsftpd 的埠為6709

5、最後不要忘記到阿里雲安全組新增6709埠號

五、本文參考

1.https://help.aliyun.com/document_detail/51998.html?spm=5176.11065259.1996646101.searchclickresult.232f56b2leo5fC#h2-linux-ftp-2

2.https://help.aliyun.com/knowledge_detail/41291.html?spm=a2c4g.11186623.4.5.jTvPdu

3.https://blog.csdn.net/zhuixunhebe1/article/details/77651588

4.http://blog.51cto.com/mingxiaoming/1974715

5.https://blog.csdn.net/binsoft/article/details/44595677