Vsftpd(very secure FTP daemon)是众多 Linux 发行版中默认的 FTP 服务器。本文以 CentOS 7.6 64位操作系统的腾讯云服务器(CVM)为例,使用 vsftpd 软件搭建 Linux 云服务器的 FTP 服务。
本文搭建 FTP 服务组成版本如下:
使用标准方式登录 Linux 实例(推荐)。您也可以根据实际操作习惯,选择其他不同的登录方式:
执行以下命令,安装 vsftpd。
yum install -y vsftpd
执行以下命令,设置 vsftpd 开机自启动。
systemctl enable vsftpd
执行以下命令,启动 FTP 服务。
systemctl start vsftpd
执行以下命令,确认服务是否启动。
netstat -antup | grep ftp
显示结果如下,则说明 FTP 服务已成功启动。
此时,vsftpd 已默认开启匿名访问模式,无需通过用户名和密码即可登录 FTP 服务器。使用此方式登录 FTP 服务器的用户没有修改或上传文件的权限。
执行以下命令,为 FTP 服务创建一个 Linux 用户,本文以 ftpuser 为例。
useradd ftpuser
执行以下命令,设置 ftpuser 用户的密码。
passwd ftpuser
输入密码后请按 Enter 确认设置,密码默认不显示,本文以 tf7295TFY
为例。
3. 执行以下命令,创建 FTP 服务使用的文件目录,本文以 /var/ftp/test
为例。
mkdir /var/ftp/test
执行以下命令,修改目录权限。
chown -R ftpuser:ftpuser /var/ftp/test
执行以下命令,打开 vsftpd.conf
文件。
vim /etc/vsftpd/vsftpd.conf
按 i 切换至编辑模式,根据实际需求选择 FTP 模式,修改配置文件 vsftpd.conf
:
i. 修改以下配置参数,设置匿名用户和本地用户的登录权限,设置指定例外用户列表文件的路径,并开启监听 IPv4 sockets。注意FTP 可通过主动模式和被动模式与客户端机器进行连接并传输数据。由于大多数客户端机器的防火墙设置及无法获取真实 IP 等原因,建议您选择被动模式搭建 FTP 服务。如下修改以设置被动模式为例,您如需选择主动模式,请前往 设置 FTP 主动模式。
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
ii. 在行首添加 #
,注释 listen_ipv6=YES
配置参数,关闭监听 IPv6 sockets。
#listen_ipv6=YES
iii. 添加以下配置参数,开启被动模式,设置本地用户登录后所在目录,以及云服务器建立数据传输可使用的端口范围值。
local_root=/var/ftp/test
allow_writeable_chroot=YES
pasv_enable=YES
pasv_address=xxx.xx.xxx.xx #请修改为您的 Linux 云服务器公网 IP
pasv_min_port=40000
pasv_max_port=45000
按 Esc 后输入 :wq 保存后退出。
vim /etc/vsftpd/chroot_list
按 i 进入编辑模式,输入用户名,一个用户名占据一行,设置完成后按 Esc 并输入 :wq 保存后退出。
设置的用户将不会被锁定在主目录,您若没有设置例外用户的需求,可跳过此步骤,输入 :wq 退出文件。
执行以下命令,重启 FTP 服务。
systemctl restart vsftpd
搭建好 FTP 服务后,您需要根据实际使用的 FTP 模式给 Linux 云服务器放通入站规则,详情请参见 添加安全组规则。
大多数客户端机器在局域网中,IP 地址是经过转换的。如果您选择了 FTP 主动模式,请确保客户端机器已获取真实的 IP 地址,否则可能会导致客户端无法登录 FTP 服务器。
pasv_min_port
到 pasv_max_port
之间的所有端口,本文放通端口为40000 - 45000。您可通过 FTP 客户端软件、浏览器或文件资源管理器等工具验证 FTP 服务,本文以客户端的文件资源管理器为例。
ftp://云服务器公网IP:21
3. 在弹出的“登录身份”窗口中输入 配置 vsftpd 中已设置的用户名及密码。
本文使用的用户名为 ftpuser
,密码为 tf7295TFY
。
4. 成功登录后,即可上传及下载文件。
主动模式需修改的配置如下,其余配置保持默认设置:
anonymous_enable=NO #禁止匿名用户登录
local_enable=YES #支持本地用户登录
chroot_local_user=YES #全部用户被限制在主目录
chroot_list_enable=YES #启用例外用户名单
chroot_list_file=/etc/vsftpd/chroot_list #指定用户列表文件,该列表中的用户不被锁定在主目录
listen=YES #监听IPv4 sockets
#在行首添加#注释掉以下参数
#listen_ipv6=YES #关闭监听IPv6 sockets
#添加下列参数
allow_writeable_chroot=YES
local_root=/var/ftp/test #设置本地用户登录后所在的目录
按 Esc 后输入 :wq 保存后退出,并前往 步骤8 完成 vsftpd 配置。
Linux 系统环境下,通过 vsftp 上传文件时,提示如下报错信息。
553 Could not create file
df -h
ls -l /home/test
# /home/test 为 FTP 目录,请修改为您实际的 FTP 目录。
w
,则表示该用户没有写的权限,请执行下一步。w
,请通过 提交工单 进行反馈。执行以下命令,对 FTP 目录加上写的权限。
chmod +w /home/test
# /home/test 为 FTP 目录,请修改为您实际的 FTP 目录。
执行以下命令,重新检查写的权限是否设置成功。
ls -l /home/test
# /home/test 为 FTP 目录,请修改为您实际的 FTP 目录。
本页内容是否解决了您的问题?