在Linux实例中搭建FTP服务器

更新时间:2025-02-12 02:15:43
一键部署
我的部署

vsftpd(very secure FTP daemon)是一个广泛使用的、开源的FTP服务器软件,以其高性能、高安全性和稳定性著称,支持多种FTP相关协议,包括FTP、SFTP(通过SSH)、TLS/SSL加密的FTP等。本文介绍如何在Linux系统的ECS实例上安装并配置vsftpd。

快速部署

您可以单击一键运行进入Terraform Explorer查看并执行Terraform代码,从而实现自动化地在ECS实例中搭建FTP站点。

准备资源

已创建一台基础ECS实例,并满足以下配置。如果您还未创建,请参见自定义购买实例

  • 操作系统:Alibaba Cloud Linux 3 / 2、CentOS 7.x 64位、Ubuntu、Debian。

  • IP地址:实例已分配固定公网IP地址或绑定弹性公网IP(EIP)。具体操作,请参见弹性公网IP

VSFTP简介

vsftpd(Very Secure FTP Daemon)是一个开源的FTP服务器软件,专为UNIXLinux系统设计。其主要特点包括:

  • 安全性高:vsftpd经过严格的安全审计,采用多种安全机制,能有效防止常见的攻击和漏洞。

  • 性能优越:具备高性能的文件传输能力,支持大并发用户同时连接。

  • 配置简单:提供灵活且易于理解的配置选项,适合各种用户需求。

  • 支持IPv6:对新一代网络协议提供友好的支持。

搭建VSFTP服务

Alibaba Cloud Linux 3、2/CentOS 7.x
Ubuntu/Debian

步骤一:安装vsftpd

  1. 执行以下命令,更新Yum源并安装 vsftpd。

    sudo yum update
    sudo yum install -y vsftpd
  2. 执行以下命令,设置 vsftpd 开机自启动。

    systemctl enable vsftpd
  3. 执行以下命令,启动 FTP 服务。

    systemctl start vsftpd
  4. 执行以下命令,确认服务是否启动。

    netstat -antup | grep ftp

    显示结果如下,则说明 FTP 服务已成功启动。

    image

    此时,vsftpd 已默认开启匿名用户模式,无需通过用户名和密码即可登录 FTP 服务器。使用此方式登录 FTP 服务器的用户没有修改或上传文件的权限。

步骤二:配置 vsftpd

  1. 执行以下命令,为 FTP 服务创建一个 Linux 用户,本文以 ftpuser 为例。

    useradd ftpuser
  2. 执行以下命令,设置 ftpuser 用户的密码。

    passwd ftpuser

    输入密码后请按 Enter 确认设置,密码默认不显示。

  3. 执行以下命令,创建 FTP 服务使用的文件目录,本文以 /var/ftp/test 为例。

    mkdir /var/ftp/test
  4. 执行以下命令,修改目录权限。

    chown -R ftpuser:ftpuser /var/ftp/test
  5. 执行以下命令,打开 vsftpd.conf 文件。

    vim /etc/vsftpd/vsftpd.conf
  6. 按 i 切换至编辑模式,根据实际需求选择 FTP 模式,修改配置文件 vsftpd.conf。

    说明

    FTP 可通过主动模式和被动模式与客户端机器进行连接并传输数据。由于大多数客户端机器的防火墙设置及无法获取真实 IP 等原因,建议您选择被动模式搭建 FTP 服务。如下修改以设置被动模式为例。

    1. 运行以下命令,备份vsftp配置文件。

      sudo cp /etc/vsftpd/vsftpd.conf  /etc/vsftpd/vsftpd.conf.bak
    2. 修改以下配置参数,设置匿名用户和本地用户的登录权限,设置指定例外用户列表文件的路径,并开启监听 IPv4 sockets。

      anonymous_enable=NO
      local_enable=YES
      write_enable=YES
      chroot_local_user=YES
      chroot_list_enable=YES
      chroot_list_file=/etc/vsftpd/chroot_list
      listen=YES
    3. 在行首添加 #,注释 listen_ipv6=YES 配置参数,关闭监听 IPv6 sockets。

      #listen_ipv6=YES
    4. 添加以下配置参数,开启被动模式,设置本地用户登录后所在目录,以及云服务器建立数据传输可使用的端口范围值。

      local_root=/var/ftp/test
      allow_writeable_chroot=YES
      #pasv_enable=YES 被动模式,pasv_enable=NO 主动模式
      pasv_enable=YES
      #请修改为您的 Linux 云服务器公网 IP
      pasv_address=xxx.xx.xxx.xx
      pasv_min_port=40000
      pasv_max_port=40100
      说明

      FTP服务被动模式放通范围端口的原因及配置建议请参见搭建FTP站点(Windows)

  7. 按 Esc 后输入 :wq 保存后退出。

  8. 执行以下命令,创建并编辑 chroot_list 文件。

    vim /etc/vsftpd/chroot_list
  9. 按 i 进入编辑模式,输入用户名,一个用户名占据一行,设置完成后按 Esc 并输入 :wq 保存后退出。设置的用户将会被锁定在主目录,您若没有设置例外用户的需求,可跳过此步骤,输入 :q 退出文件。

    image

  10. 执行以下命令,重启 FTP 服务。

    systemctl restart vsftpd

步骤三:设置安全组

完成FTP服务搭建后,您需要根据实际使用的 FTP 模式给 Linux 云服务器放通入站规则,详情请参见添加安全组规则

大多数客户端机器在局域网中,其 IP 地址经过了转换。如果您选择使用 FTP 主动模式,请确保客户端机器获得了其真实的 IP 地址,否则可能会导致客户端无法成功登录 FTP 服务器。确保正确配置有助于避免连接问题,从而提高 FTP 服务的稳定性和可用性。

  • 主动模式:放通端口21。

  • 被动模式:放通端口21,及配置文件 /etc/vsftpd/vsftpd.conf 中设置的 pasv_min_port 到 pasv_max_port 之间的所有端口,本文放通端口为40000-40100。FTP服务被动模式放通范围端口的原因及配置建议请参见FTP被动模式端口配置建议

步骤四:验证FTP服务

您可通过 FTP 客户端软件、浏览器或文件资源管理器等工具验证 FTP 服务,本文以客户端的文件资源管理器为例。

  1. 打开客户端的计算机,在路径栏中访问以下地址。如下图所示。

    image

  2. 在弹出的登录身份窗口中输入设置FTP用户及密码中已设置的用户名及密码。

  3. 成功登录后,即可上传及下载文件。

步骤一:安装VSFTP

  1. 运行以下命令,安装vsftpd服务:

    # 更新apt源
    sudo apt-get update
    sudo apt-get install vsftpd
  2. 运行以下命令,备份原始配置文件。

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

步骤二:配置VSFTP

  1. 运行以下命令,修改vsftpd的配置文件:

    sudo vim /etc/vsftpd.conf
  2. 在配置文件中修改如下配置:

    1. 修改以下配置,配置FTP访问权限。只允许本地用户访问 FTP,并禁用任何匿名访问

      anonymous_enable=NO
      local_enable=YES
    2. 修改以下配置,启用文件上传。

      write_enable=YES
    3. 取消以下行配置前的注释,使用vsftpd 通过使用 chroot jails 实现限制FTP用户访问目录,并配置可访问FTP服务用户文件。

      chroot_local_user=YES
      chroot_list_file=/etc/vsftpd.chroot_list
    4. 在配置文件中添加以下配置,配置FTP服务目录,以及开启允许用户在挂载的 chroot(改变根目录)环境中写入。当 chroot 环境为可写时通常会被禁止(默认)。

      local_root=/home/ftp 
      allow_writeable_chroot=YES
    5. (可选)修改以下配置,配置FTP被动模式。vsftpd 可以使用任何端口进行被动 FTP 连接。可为 vsftpd 可以使用的最小和最大端口号指定一个范围。

      在配置文件中,添加以下行以允许被动 FTP 连接。

      pasv_min_port=35000
      pasv_max_port=40000
    6. 运行以下命令,重新启动 vsftpd 以启用配置。

      sudo systemctl restart vsftpd

步骤三:配置用户目录

  1. FTP安装完成后,会默认为我们创建用户名为ftp的用户,默认无密码。运行以下命令修改ftp密码。

    sudo passwd ftp

    设置一个强密码并跳过所有其他提示。

  2. 运行以下命令,将用户添加到允许的FTP用户列表中。

    echo "ftp" | sudo tee -a /etc/vsftpd.userlist
  3. 运行以下命令,创建FTP文件目录和授予用户权限。

    1. 运行以下命令,创建FTP文件夹。

      sudo mkdir /home/ftp
    2. 运行以下命令,设置文件夹所有权。本例中赋予文件夹读、写、完全控制权限。您也可以根据自己的需求修改相应权限。

      sudo chmod 777 /home/ftp

步骤四:设置安全组

完成FTP服务搭建后,您需要根据实际使用的 FTP 模式给 Linux 云服务器放通入站规则,详情请参见添加安全组规则

大多数客户端机器在局域网中,其 IP 地址经过了转换。如果您选择使用 FTP 主动模式,请确保客户端机器获得了其真实的 IP 地址,否则可能会导致客户端无法成功登录 FTP 服务器。确保正确配置有助于避免连接问题,从而提高 FTP 服务的稳定性和可用性。

  • 主动模式:放通端口21。

  • 被动模式:放通端口21,及配置文件 /etc/vsftpd/vsftpd.conf 中设置的 pasv_min_port 到 pasv_max_port 之间的所有端口。FTP服务被动模式放通范围端口的原因及配置建议请参见搭建FTP站点(Windows)

步骤四:验证FTP服务

您可通过 FTP 客户端软件、浏览器或文件资源管理器等工具验证 FTP 服务,本文以客户端的文件资源管理器为例。

  1. 打开客户端的计算机,在路径栏中访问以下地址。如下图所示:

    image

  2. 在弹出的登录身份窗口中输入设置FTP用户及密码中已设置的用户名及密码。

  3. 成功登录后,即可上传及下载文件。

附录

vsftp配置文件及参数说明

/etc/vsftpd目录下文件说明如下:

  • /etc/vsftpd/vsftpd.confvsftpd的核心配置文件。

  • /etc/vsftpd/ftpusers是黑名单文件,此文件中的用户不允许访问FTP服务器。

  • /etc/vsftpd/user_list是白名单文件,此文件中的用户允许访问FTP服务器。

vsftpd.conf配置文件参数说明如下:

  • 用户登录控制参数说明如下表所示。

    参数

    说明

    参数

    说明

    anonymous_enable=YES

    接受匿名用户

    no_anon_password=YES

    匿名用户login时不询问口令

    anon_root=(none)

    匿名用户主目录

    local_enable=YES

    接受本地用户

    local_root=(none)

    本地用户主目录

  • 用户权限控制参数说明如下表所示。

    参数

    说明

    参数

    说明

    write_enable=YES

    可以上传文件(全局控制)

    local_umask=022

    本地用户上传的文件权限

    file_open_mode=0666

    上传文件的权限配合umask使用

    anon_upload_enable=NO

    匿名用户可以上传文件

    anon_mkdir_write_enable=NO

    匿名用户可以建目录

    anon_other_write_enable=NO

    匿名用户修改删除

    chown_username=lightwiter

    匿名上传文件所属用户名

  • 本页导读 (1)
  • 快速部署
  • 准备资源
  • VSFTP简介
  • 搭建VSFTP服务
  • 附录
  • vsftp配置文件及参数说明
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等