2026年云服务器大促来袭
京东云服务器2折+最高500折上折满减券(可叠加):jd-cloud.xyz
腾讯云买一年送三个月+三年轻量五年CVM仅2折:https://curl.qcloud.com/EAfp8ji3

腾讯云服务器CVM搭建FTP服务(CentOS7.6)

5次阅读

共计 4264 个字符,预计需要花费 11 分钟才能阅读完成。

Vsftpd(very secure FTP daemon)是众多 Linux 发行版中默认的 FTP 服务器。本文以 CentOS 7.6 64位和Ubuntu 22.04 64位操作系统的腾讯云服务器(CVM)为例,使用 vsftpd 软件搭建 Linux 云服务器的 FTP 服务。

示例软件版本

本文搭建 FTP 服务组成版本如下:
Linux 操作系统:本文以公共镜像 CentOS 7.6 和 Ubuntu 22.04为例。
Vsftpd:不同 Linux 操作系统搭建的 FTP 服务示例版本如下:
CentOS 7.6:Vsftpd 3.0.2
Ubuntu 22.04:Vsftpd 3.0.5

操作步骤

步骤1:登录云服务器

使用标准方式登录 Linux 实例(推荐)。您也可以根据实际操作习惯,选择其他登录方式:

步骤2:安装 Vsftpd

1. 执行以下命令,安装 Vsftpd。
yum install -y vsftpd
2. 执行以下命令,设置 Vsftpd 开机自启动。
systemctl enable vsftpd
3. 执行以下命令,启动 FTP 服务。
systemctl start vsftpd
4. 执行以下命令,确认服务是否启动。
netstat -antup | grep ftp
显示结果如下,则说明 FTP 服务已成功启动。
腾讯云服务器CVM搭建FTP服务(CentOS7.6)
此时,Vsftpd 已默认开启匿名访问模式,无需通过用户名和密码即可登录 FTP 服务器。使用此方式登录 FTP 服务器的用户没有修改或上传文件的权限。

步骤3:配置 Vsftpd

1. 执行以下命令,为 FTP 服务创建一个 Linux 用户,本文以 ftpuser 为例。
useradd ftpuser
2. 执行以下命令,设置 ftpuser 用户的密码。
passwd ftpuser
输入密码后请按 Enter 确认设置,密码默认不显示。
注意:
为了避免因密码强度较弱导致的被入侵风险,建议设置12位以上密码,其中包含大小写英文字母、数字及 #%$-! 等特殊符号。
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 服务。如下修改以设置被动模式为例,您如需选择主动模式,请前往 设置 FTP 主动模式
6.1 修改以下配置参数,设置匿名用户和本地用户的登录权限,设置指定例外用户列表文件的路径,并开启监听 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
6.2 在行首添加 #,注释 listen_ipv6=YES 配置参数,关闭监听 IPv6 sockets。
#listen_ipv6=YES
6.3 添加以下配置参数,开启被动模式,设置本地用户登录后所在目录,以及云服务器建立数据传输可使用的端口范围值。
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=45000
7. Esc 后输入 :wq 保存后退出。
8. 执行以下命令,创建并编辑 chroot_list 文件。
vim /etc/vsftpd/chroot_list
9. i 进入编辑模式,输入用户名,一个用户名占据一行,设置完成后按 Esc 并输入 :wq 保存后退出。
10. 设置的用户将会被锁定在主目录,您若没有设置例外用户的需求,可跳过此步骤,输入 :q 退出文件。
11. 执行以下命令,重启 FTP 服务。
systemctl restart vsftpd

步骤4:设置安全组

搭建好 FTP 服务后,您需要根据实际使用的 FTP 模式给 Linux 云服务器放通入站规则,详情请参见 添加安全组规则
大多数客户端机器在局域网中,IP 地址是经过转换的。如果您选择了 FTP 主动模式,请确保客户端机器已获取真实的 IP 地址,否则可能会导致客户端无法登录 FTP 服务器。
主动模式:放通端口21。
被动模式:放通端口21,及配置文件 /etc/vsftpd/vsftpd.conf 中设置的 pasv_min_portpasv_max_port 之间的所有端口,本文放通端口为40000 – 45000。

步骤5:验证 FTP 服务

您可通过 FTP 客户端软件、浏览器或文件资源管理器等工具验证 FTP 服务,本文将使用 FTP 客户端工具 FileZilla 连接 FTP 服务器。
1. 在本地主机上,下载并安装 FileZilla。
FileZilla客户端下载页面 基于本地主机的操作系统选择合适的客户端版本下载安装 FileZilla 客户端。
2. 打开 FileZilla 客户端。
3. 在顶部菜单栏,选择文件 > 站点管理器
4. 在站点管理器对话框的左下角,单击新站点(N)
5. 输入新站点的名称,并完成站点配置。
说明:以下界面为3.68.1版本的 FileZilla 客户端界面,其他版本的 FileZilla 客户端界面可能有所不同。
腾讯云服务器CVM搭建FTP服务(CentOS7.6)
具体的配置项说明如下:
新站点名称:您自定义的站点名称,例如 test。
协议:FTP-文件传输协议。
主机:FTP 服务器公网 IP 地址。本文中为 Linux 实例的公网 IP 地址,例如121.43.XX.XX。
端口:21。
登录类型:正常
用户:FTP 服务端允许访问的用户,配置 Vsftpd 中已设置的用户名,本文使用的用户名为 ftpuser。
密码:FTP 服务端允许访问的用户对应密码,配置 Vsftpd 中已设置用户的密码,本文使用的是用户 ftpuser 的密码。
传输设置 中可选择 FTP 的主动或被动模式,如下图所示,本文以被动模式为例。
腾讯云服务器CVM搭建FTP服务(CentOS7.6)
6. 单击连接
连接成功后,您可以对文件进行上传、下载和删除等操作。FileZilla 工具界面如下图所示。
腾讯云服务器CVM搭建FTP服务(CentOS7.6)

附录

设置 FTP 主动模式

主动模式需修改的配置如下,其余配置保持默认设置:
#禁止匿名用户登录
anonymous_enable=NO
#支持本地用户登录
local_enable=YES
#全部用户被限制在主目录
chroot_local_user=YES
#启用例外用户名单
chroot_list_enable=YES
#指定用户列表文件,该列表中的用户不被锁定在主目录
chroot_list_file=/etc/vsftpd/chroot_list
#监听IPv4 sockets
listen=YES
#在行首添加#注释掉以下参数, 关闭监听IPv6 sockets
#listen_ipv6=YES
#添加下列参数
allow_writeable_chroot=YES
#设置本地用户登录后所在的目录
local_root=/var/ftp/test
Esc 后输入 :wq 保存后退出,并重启 Vsftpd 服务后生效。

FTP 客户端上传文件失败

问题描述

Linux 系统环境下,通过 Vsftpd 上传文件时,提示如下报错信息。
553 Could not create file

解决方法

1. 执行以下命令,检查服务器磁盘空间的使用率。
df -h
如果磁盘空间不足,将会导致文件无法上传,建议删除磁盘容量较大的文件。
如果磁盘空间正常,请执行下一步。
2. 执行以下命令,检查 FTP 目录是否有写的权限。
ls -l /home/test
# /home/test 为 FTP 目录,请修改为您实际的 FTP 目录。
若返回结果中没有 w,则表示该用户没有写的权限,请执行下一步。
若返回结果中已有 w,请通过 在线支持 进行反馈。
3. 执行以下命令,对 FTP 目录加上写的权限。
chmod +w /home/test
# /home/test 为 FTP 目录,请修改为您实际的 FTP 目录。
4. 执行以下命令,重新检查写的权限是否设置成功。
ls -l /home/test
# /home/test 为 FTP 目录,请修改为您实际的 FTP 目录。

FTP 登录成功但无法正常执行命令常见修复方法

问题描述

客户端系统上登录 ftp 时,报错如下:
331 Please specify the password.
Password:
230 Login successful.
ftp> ls
500 Illegal PORT command.
500 Unknown command.
425 Use PORT or PASV first.

解决方法

方式一:
退出当前 FTP,采用被动模式登录,命令如下:
“ftp -p ftpuser@ip” #平台设置为被动模式时,可以用该命令登录。
方式二:
登录成功后,在 FTP 模式下执行 passive 设置被动模式,再次执行 passive,被动模式会关闭变为主动模式,命令如下:
bash>ftp ftpuser@ip
Connected to ip.
220 (vsFTPd 3.0.2)
331 Please specify the password.
Password:
230 Login successful.
ftp> passive
Passive mode on.

问题描述

FTP 登录成功后,执行命令如下报错。
ftp> ls
550 Permission denied.
500 Unknown command.
Passive mode refused.

解决方法

1. 该问题是 FTP server 端没有正确配置访问模式导致的权限拒绝,需要登录 ftp server 端,执行以下命令,打开 vsftpd.conf 文件。
vim /etc/vsftpd/vsftpd.conf
2. 找到下面的配置,打开被动模式,如果没有该配置,需要在文件最后添加配置。
pasv_enable=YES
3. 按 Esc 后输入 :wq 保存后退出。
4. 执行以下命令,重启 FTP 服务。
systemctl restart vsftpd
5. 重试 ftp user@ip 登录,并执行需要操作的 ftp 命令。
正文完
联系我
post-qrcode