凌峰创科服务平台

Ubuntu如何快速搭建FTP服务器?

第一步:安装 vsftpd

打开你的终端(Terminal),使用 apt 包管理器来安装 vsftpd。

Ubuntu如何快速搭建FTP服务器?-图1
(图片来源网络,侵删)
sudo apt update
sudo apt install vsftpd

安装完成后,vsftpd 服务会自动启动,你可以通过以下命令检查其状态:

sudo systemctl status vsftpd

如果看到绿色的 active (running) 字样,说明服务正在运行。


第二步:配置 vsftpd

这是最关键的一步,我们将编辑 vsftpd 的主配置文件 /etc/vsftpd.conf

备份原始配置文件 在进行任何修改之前,最好先备份一下原始配置文件。

Ubuntu如何快速搭建FTP服务器?-图2
(图片来源网络,侵删)
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

编辑配置文件 使用你喜欢的文本编辑器(如 nano)来打开配置文件。

sudo nano /etc/vsftpd.conf

下面是配置文件中一些最重要的选项及其推荐设置,你可以根据你的需求进行修改。

# 禁止匿名用户登录
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 允许本地用户有写权限(上传、创建目录等)
write_enable=YES
# 启用用户列表,并限制只有该列表中的用户才能登录
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO  # NO表示只允许列表中的用户,YES表示禁止列表中的用户
# 启用 chroot 功能,将用户限制在其主目录中
# 这是非常重要的安全特性!
chroot_local_user=YES
# chroot_local_user=YES,下面的设置可以防止用户在 chroot 环境中拥有写权限时
# 出现权限问题,vsftpd 2.3.5 之后需要这个设置。
allow_writeable_chroot=YES
# 设置欢迎信息
ftpd_banner=Welcome to FTP service.
# 设置数据连接的端口范围,用于被动模式(推荐)
pasv_min_port=10000
pasv_max_port=10100
# 启用日志记录
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/vsftpd.log

配置解释:

  • anonymous_enable=NO:出于安全考虑,我们禁止匿名访问。
  • local_enable=YES:允许系统上的用户登录。
  • write_enable=YES:允许用户进行写操作(如上传文件)。
  • userlist_enable=YESuserlist_deny=NO:这是一个非常安全的做法,它会读取 /etc/vsftpd.userlist 文件,只允许文件中列出的用户登录,这比直接在系统用户中挑选更灵活和安全。
  • chroot_local_user=YES:将用户“监禁”在其自己的家目录下,用户 testuser 登录后,只能在 /home/testuser 目录及其子目录中活动,无法访问 /etc, /var 等系统敏感区域。
  • allow_writeable_chroot=YES:当 chroot 环境是可写时,这个选项可以避免一个安全警告。
  • pasv_min_portpasv_max_port强烈建议设置,这为 FTP 的被动模式数据连接指定了一个端口范围,后面在配置防火墙时,你需要开放这个范围内的端口。

保存并退出文件:nano 编辑器中,按 Ctrl + X,然后按 Y,最后按 Enter


第三步:创建 FTP 用户并配置权限

创建一个专门用于 FTP 的用户 为了安全,最好不要直接使用系统已有的管理员用户(如 root),我们创建一个新用户,ftpuser

sudo adduser ftpuser

按照提示设置该用户的密码和相关信息,这个用户会被自动创建一个家目录,/home/ftpuser

将用户添加到允许登录的列表 根据我们上面的配置,需要将 ftpuser 添加到 /etc/vsftpd.userlist 文件中。

echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist
  • echo "ftpuser":输出用户名。
  • | sudo tee -a /etc/vsftpd.userlist:使用 tee 命令,以追加 (-a) 的方式将用户名写入到 vsftpd.userlist 文件中。

你可以用 cat 命令检查文件内容是否正确:

cat /etc/vsftpd.userlist

设置用户目录的权限 确保 ftpuser 对其家目录有正确的读写权限。

sudo chown -R ftpuser:ftpuser /home/ftpuser
sudo chmod -R 755 /home/ftpuser
  • chown:更改目录所有者为 ftpuser
  • chmod 755:设置所有者有读写执行权限,组用户和其他用户有读和执行权限,这是标准的目录权限设置。

第四步:配置防火墙

Ubuntu 自带的 ufw (Uncomplicated Firewall) 默认会阻止 FTP 连接,因为 FTP 使用了动态数据端口,比较特殊,我们需要为它创建一个“应用配置文件”来允许流量。

安装 ufw-applications 如果你的 ufw 没有应用配置功能,可能需要安装这个包。

sudo apt install ufw-applications

允许 FTP 流量 直接使用以下命令,ufw 会自动处理 FTP 的复杂端口问题。

sudo ufw allow ftp

开放我们为被动模式设置的端口范围 还记得我们在 vsftpd.conf 中设置的 10000-10100 吗?现在需要开放这个端口范围。

sudo ufw allow 10000:10100/tcp

启用防火墙 如果你的防火墙尚未启用,现在启用它。

sudo ufw enable

(如果已经启用,跳过此步)

检查防火墙规则 确认规则是否添加成功。

sudo ufw status

你应该能看到 ALLOW 列下有 FTP10000:10100/tcp 的规则。


第五步:重启 vsftpd 服务并测试

重启服务 让所有新的配置生效。

sudo systemctl restart vsftpd

使用 FTP 客户端连接测试 现在你可以使用任何 FTP 客户端来测试了。

  • Windows: 使用文件资源管理器,在地址栏输入 ftp://<你的服务器IP地址>
  • macOS/Linux: 使用命令行 ftp <你的服务器IP地址>
  • 专用软件: FileZilla 是一个非常流行的图形化 FTP 客户端。

连接信息:

  • 主机/服务器: 你的 Ubuntu 服务器的 IP 地址 (168.1.100 或公网 IP)
  • 用户名: ftpuser
  • 密码: 你在创建用户时设置的密码

如果连接失败,请检查:

  1. 用户名和密码是否正确。
  2. /etc/vsftpd.userlist 文件中是否包含了正确的用户名。
  3. 防火墙规则是否正确。
  4. vsftpd 服务是否正在运行 (sudo systemctl status vsftpd)。
  5. 尝试在服务器上使用 tail -f /var/log/vsftpd.log 查看服务器端的日志,可能会发现错误信息。

第六步:安全最佳实践(可选但推荐)

  1. 禁用 Shell 访问: 如果你只想让用户通过 FTP 访问,而不想让他们通过 SSH 登录服务器,可以将其登录 shell 设置为 /usr/sbin/nologin

    sudo usermod -s /usr/sbin/nologin ftpuser
  2. 使用 SFTP (SSH File Transfer Protocol): 强烈推荐使用 SFTP,它通过 SSH 协议传输文件,数据是加密的,且默认在大多数 SSH 服务器上都是可用的,现代 FTP 客户端(如 FileZilla)都支持 SFTP,它的配置比 FTP 简单得多,也更安全。

  3. 使用 SSL/TLS 加密 FTP 连接: 如果你必须使用 FTP,可以配置 vsftpd 使用 FTPS (FTP over SSL/TLS) 来加密传输,这需要你生成 SSL 证书并修改 vsftpd.conf 中的相关配置(如 ssl_enable=YES, rsa_cert_file=/path/to/cert.pem 等),配置过程相对复杂,但安全性大大提高。


至此,你已经成功在 Ubuntu 上搭建了一个基本功能且相对安全的 FTP 服务器。

回顾关键步骤:

  1. sudo apt install vsftpd
  2. sudo nano /etc/vsftpd.conf (配置 anonymous_enable=NO, chroot_local_user=YES, userlist_deny=NO 等)
  3. sudo adduser ftpuserecho "ftpuser" | sudo tee -a /etc/vsftpd.userlist
  4. sudo ufw allow ftpsudo ufw allow 10000:10100/tcp
  5. sudo systemctl restart vsftpd
  6. 使用 FileZilla 或其他客户端进行测试。
分享:
扫描分享到社交APP
上一篇
下一篇