凌峰创科服务平台

Linux服务器如何开启FTP服务?

准备工作:选择 FTP 服务器软件

在开始之前,你需要选择一个 FTP 服务器,对于绝大多数 Linux 发行版,vsftpd 是默认且最推荐的选择,因为它非常安全、稳定且配置简单。

Linux服务器如何开启FTP服务?-图1
(图片来源网络,侵删)
  • vsftpd (Very Secure FTP Daemon): 我们将重点介绍这个。
  • Pure-FTPd: 另一个优秀的选择,功能丰富,易于管理。

使用 vsftpd(推荐)

vsftpd 是 "Very Secure FTP Daemon" 的缩写,是目前最流行、最安全的 FTP 服务器之一。

步骤 1:安装 vsftpd

登录到你的 Linux 服务器(建议使用 SSH),然后根据你的发行版选择以下命令之一:

对于 Debian / Ubuntu:

sudo apt update
sudo apt install vsftpd

对于 CentOS / RHEL / Rocky Linux / AlmaLinux:

Linux服务器如何开启FTP服务?-图2
(图片来源网络,侵删)
sudo yum install vsftpd
# 或者使用 dnf (较新版本)
sudo dnf install vsftpd

安装完成后,vsftpd 服务通常不会自动启动。

步骤 2:启动并设置开机自启

# 启动 vsftpd 服务
sudo systemctl start vsftpd
# 设置 vsftpd 服务开机自启
sudo systemctl enable vsftpd

你可以检查服务状态是否正常:

sudo systemctl status vsftpd

如果看到绿色的 active (running),说明服务已成功启动。

步骤 3:配置防火墙

FTP 服务默认使用 21 端口,为了能让外部客户端访问,你需要开放这个端口。

Linux服务器如何开启FTP服务?-图3
(图片来源网络,侵删)

对于使用 ufw (Uncomplicated Firewall) 的系统 (如 Ubuntu):

# 开放 21 端口
sudo ufw allow 21/tcp
# (可选) 如果你需要被动模式,还需要开放一个端口范围,60000-61000
sudo ufw allow 60000:61000/tcp

对于使用 firewalld 的系统 (如 CentOS/RHEL):

# 添加永久规则,开放 21 端口
sudo firewall-cmd --permanent --add-service=ftp
# (可选) 如果需要被动模式,开放一个端口范围
sudo firewall-cmd --permanent --add-port=60000-61000/tcp
# 重新加载防火墙使配置生效
sudo firewall-cmd --reload

步骤 4:配置 vsftpd

这是最关键的一步,默认的配置文件是 /etc/vsftpd.conf,建议先备份原文件,然后进行修改。

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
sudo nano /etc/vsftpd.conf

打开文件后,根据你的需求修改或取消注释以下关键配置项:

# 禁止匿名用户登录 (强烈建议)
anonymous_enable=NO
# 允许本地用户登录 (系统用户)
local_enable=YES
# 允许写操作 (上传、创建目录等)
write_enable=YES
# 启用 chroot 功能,将用户限制在其家目录中 (非常重要,用于安全)
# 这意味着用户登录后只能看到自己的家目录,无法访问系统其他文件。
chroot_local_user=YES
# chroot_local_user=YES,下面这行可以防止 chroot 时出现 500 错误
allow_writeable_chroot=YES
# 设置被动模式端口范围 (强烈建议,避免防火墙问题)
# 这个范围需要和防火墙中开放的端口范围一致
pasv_min_port=60000
pasv_max_port=61000
# 用户黑名单 (可选)
# 如果你希望某些系统用户不能登录FTP,可以将他们加入这个文件
# userlist_file=/etc/vsftpd.userlist
# userlist_enable=YES
# userlist_deny=NO  # NO表示列表中的用户允许登录,YES表示列表中的用户禁止登录

保存并关闭文件(在 nano 中是 Ctrl+X,然后按 Y,再按 Enter)。

步骤 5:创建 FTP 用户

FTP 服务通常使用系统用户来登录,为了安全,建议为 FTP 创建专用的用户,而不是使用 root 或其他系统管理账户。

假设我们要创建一个名为 ftpuser 的用户,并设置其家目录为 /home/ftpuser

# 创建用户 ftpuser,并设置家目录
sudo useradd -m -d /home/ftpuser ftpuser
# 为 ftpuser 设置密码
sudo passwd ftpuser

ftpuser 就可以通过 FTP 访问其家目录 /home/ftpuser 了。

步骤 6:重启 vsftpd 服务

让新的配置生效:

sudo systemctl restart vsftpd

使用 Pure-FTPd

如果你更喜欢 Pure-FTPd,步骤如下:

步骤 1:安装 Pure-FTPd

对于 Debian / Ubuntu:

sudo apt update
sudo apt install pure-ftpd

对于 CentOS / RHEL / Rocky Linux / AlmaLinux:

sudo yum install pure-ftpd
# 或者使用 dnf
sudo dnf install pure-ftpd

步骤 2:启动并设置开机自启

sudo systemctl start pure-ftpd
sudo systemctl enable pure-ftpd

步骤 3:配置防火墙

vsftpd 相同,需要开放 21 端口和被动模式端口范围。

步骤 4:配置 Pure-FTPd

配置文件通常在 /etc/pure-ftpd/conf/ 目录下,由多个小文件组成,每个文件代表一个配置项。

要禁止匿名登录:

echo "NoAnonymous" | sudo tee /etc/pure-ftpd/conf/NoAnonymous

要启用被动模式并设置端口范围:

echo " passiveports 60000 61000" | sudo tee /etc/pure-ftpd/conf/PassivePortRange

创建 FTP 用户(与 vsftpd 相同):

sudo useradd -m -d /home/ftpuser ftpuser
sudo passwd ftpuser

步骤 5:重启 Pure-FTPd 服务

sudo systemctl restart pure-ftpd

安全注意事项

  1. 强烈建议使用 SFTP:FTP 协议在传输数据时是明文的,包括用户名和密码,非常不安全,在现代网络环境中,强烈建议使用 SFTP (SSH File Transfer Protocol),SFTP 使用 SSH 加密通道,安全性高得多,并且大多数现代 FTP 客户端(如 FileZilla, WinSCP)都支持 SFTP,SFTP 通常是 Linux 服务器上 SSH 服务的一部分,无需额外安装。

  2. 限制用户访问:使用 chroot 功能将用户限制在其家目录内,这是最基本的安全措施。

  3. 使用强密码:为你的 FTP 用户设置复杂且不易猜测的密码。

  4. 考虑虚拟用户:如果你不希望 FTP 用户拥有系统 shell 访问权限,可以配置 vsftpdPure-FTPd 使用虚拟用户(即数据库中的用户,而不是系统用户),这提供了更高的隔离性和安全性,配置虚拟用户比本地用户要复杂一些。

如何连接?

  1. 使用 FTP 客户端

    • 主机/服务器: 你的服务器 IP 地址 (168.1.100ftp.yourdomain.com)
    • 端口: 21
    • 用户名: 你创建的 FTP 用户名 (ftpuser)
    • 密码: 你设置的密码
  2. 使用浏览器

    • 在浏览器地址栏输入 ftp://你的服务器IP,然后按回车。
    • 浏览器会弹出对话框,要求输入用户名和密码。
    • 注意:通过浏览器访问 FTP 同样是不安全的,因为密码是明文传输的。

故障排查

如果连接失败,请检查以下几点:

  1. 服务状态:确认 vsftpdpure-ftpd 服务正在运行。
    sudo systemctl status vsftpd
  2. 防火墙:确认服务器的防火墙(以及云服务商的安全组,如 AWS, Azure, 阿里云)已经开放了 21 端口和被动模式的端口范围。
  3. SELinux:如果你的系统开启了 SELinux(如 CentOS/RHEL 默认开启),可能会阻止 FTP 服务,可以尝试临时关闭 SELinux 来测试:
    sudo setenforce 0

    如果可以连接了,说明是 SELinux 策略问题,你需要为 FTP 服务配置正确的 SELinux 策略,而不是永久关闭它。

  4. 日志文件:查看日志文件是排查问题的最佳方式。
    • vsftpd: /var/log/vsftpd.log
    • Pure-FTPd: /var/log/pure-ftpd.log/var/log/messages
  5. 被动模式:确保客户端和服务器都配置了被动模式,并且端口范围一致,这是最常见的连接失败原因之一。
分享:
扫描分享到社交APP
上一篇
下一篇