博客 / 詳情

返回

如何在 CentOS 8 / RHEL 8上安裝 FTP 服務器(VSFTPD)

install-vsftp-on-centos-rhel

FTP(File Transfer Protocol)是一種提供對服務器上的文件的訪問協議。它是最早允許用户通過互聯網下載文件的協議之一。通過 FTP 協議,用户可以輕鬆地在服務器上下載和上傳文件。

Vsftpd(Very Secure FTP daemon)是一種安全的 FTP 守護進程,是 FTP 協議的升級。它通過加密傳遞數據,保證文件安全傳輸,不受黑客的攻擊。

在本篇文章中,我們將焦點放在 CentOS 8 / RHEL 8 上的 vsftpd 上。

1) 安裝 vsftpd

運行 dnf 命令,安裝vsftpd

$ sudo dnf install vsftpd

dnf-install-vsftpd-centos8

y 並按 ENTER 開始安裝,下面的輸出確認 vsftpd 已經成功安裝。

Successfully-installed-vsftpd-centos8

查看 vsftpd 版本

[linuxtechi@centos8-vsftpd ~]$ rpm -q vsftpd
vsftpd-3.0.3-31.el8.x86_64
[linuxtechi@centos8-vsftpd ~]$

輸出結果應與終端上打印的版本一致。要獲取 vsftpd 的更詳細信息,可以在末尾添加 -i 標誌,如下所示

$ rpm -qi vsftpd

rpm-qi-vsftpd-centos8

啓動 vsftpd 服務

$ sudo systemctl start vsftpd

設置開機自啓動 vsftpd 服務

$ sudo systemctl enable vsftpd --now

查看 vsftpd 服務狀態

$ sudo systemctl status vsftpd

vsftpd-service-status-centos8

2) 創建 FTP 用户及其目錄

接下來,我們將創建一個用於訪問 FTP 服務器的用户,名稱可以酌情修改。

$ sudo adduser ftpuser
$ sudo passwd ftpuser

有了 FTP 用户之後,我們將繼續創建 FTP 目錄,並分配以下權限和目錄所有權。

$ sudo mkdir -p /home/ftpuser/ftp_dir
$ sudo chmod -R 750 /home/ftpuser/ftp_dir
$ sudo chown -R ftpuser: /home/ftpuser/ftp_dir

我們還需要將 FTP 用户添加到 /etc/vsftpd/user_list 文件中,以允許用户訪問 VSFTP 服務器。

$ sudo bash -c 'echo ftpuser >> /etc/vsftpd/user_list'

3) 配置 vsftpd

vsftpd 的默認配置文件是 /etc/vsftpd/vsftpd.conf ,該文件充滿了各種指令,可幫助加強您的 FTP 服務器的安全性。

允許本地用户遠程訪問 FTP 服務器,並阻止匿名用户,請設置如下行

anonymous_enable=NO
local_enable=YES

授予用户運行任何 FTP 命令的權限,並進行上傳、下載和刪除文件等更改,請設置如下行

write_enable=YES

出於安全考慮,您可以選擇限制用户訪問其主目錄以外的任何文件和目錄,請設置如下行

chroot_local_user=YES

授予用户對其各自主目錄的寫訪問權,請設置如下行

allow_writeable_chroot=YES

接下來,我們將自定義端口來啓用被動 FTP 連接。在本例中,我們將指定端口 30000 和 31000。稍後我們將在防火牆上打開這些。

pasv_min_port=30000
pasv_max_port=31000

接下來,我們將僅允許在 /etc/vsftpd/user_list 中定義的用户訪問服務器,請設置如下行

userlist_file=/etc/vsftpd/user_list
userlist_deny=NO

保存文件並重啓 vsftpd 服務

$ sudo systemctl restart vsftpd

通過運行 ftp 命令測試 FTP 連通性

$ ftp ip-address

輸入 ftp 用户名,然後提供密碼,您應該得到如下所示的輸出。

ftp-command-linux

4) 配置 SSL / TLS 證書

為了加密服務器和客户端系統之間的通信,我們需要生成一個 TLS 證書,然後配置服務器使用它。

運行下面的命令,生成證書

$ sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

隨後會出現一系列提示,要求您提供一些詳細信息,例如國家名稱、州或省以及組織名稱。

SSL-Certs-vsftpd-CentOS8

返回到配置文件 /etc/vsftpd/vsftpd.conf,指定證書文件的路徑。

rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd.pem

然後,指示服務器打開 SSL

ssl_enable=YES

保存文件,重啓 vsftpd 服務

$ sudo systemctl restart vsftpd

5) 防火牆中放行 FTP 端口

如果您正在運行防火牆,則需要允許以下端口

  • 20 – to allow FTP traffic
  • 21 – FTP data port
  • 30000-31000 – To allow passive communication with the FTP server.

運行如下命令,放行端口

$ sudo firewall-cmd --permanent --add-port=20-21/tcp
$ sudo firewall-cmd --permanent --add-port=30000-31000/tcp

重新加載防火牆

$ sudo firewall-cmd --relo­ad

6) 測試 FTP

所有設置完成後,是時候測試我們的連接了。在本例中,我們使用一個名為 FileZilla 的 FTP 客户端,它是客户端和服務器系統的免費 FTP 客户端,它支持普通 FTP 和 TLS 之上的 FTP。

啓動後,界面如下所示。提供主機的 IP 地址,FTP 用户名和密碼,然後點擊 Quickconnect 按鈕。

Connect-ftpserver-filezilla

不久之後,彈出窗口將顯示 FTP 服務器的證書和會話詳細信息。要繼續連接,請單擊“Always trust this certificate in future session”,然後按 enter 鍵。

SSL-Certs-vsftpd-filezilla

在右下窗格中,遠程服務器的主目錄如所示。現在你可以上傳、下載和編輯文件了。

Access-ftp-server-filezilla

我的開源項目

酷瓜雲課堂-開源知識付費解決方案

  • course-tencent-cloud(酷瓜雲課堂 - gitee倉庫)
  • course-tencent-cloud(酷瓜雲課堂 - github倉庫)
user avatar _5f356707606d9 頭像
1 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.