腾讯云云服务器CVM - Linux 云服务器搭建 FTP 服务
文档简介:
操作场景:
Vsftpd(very secure FTP daemon)是众多 Linux 发行版中默认的 FTP 服务器。本文以 CentOS 7.6 64位操作系统的腾讯云服务器(CVM)为例,使用 vsftpd 软件搭建 Linux 云服务器的 FTP 服务。
操作场景
Vsftpd(very secure FTP daemon)是众多 Linux 发行版中默认的 FTP 服务器。本文以 CentOS 7.6 64位操作系统的腾讯云服务器(CVM)为例,使用 vsftpd 软件搭建 Linux 云服务器的 FTP 服务。
示例软件版本
本文搭建 FTP 服务组成版本如下:
Linux 操作系统:本文以公共镜像 CentOS 7.6 为例。
Vsftpd:本文以 vsftpd 3.0.2 为例。
操作步骤
步骤1:登录云服务器
使用标准方式登录 Linux 实例(推荐)。您也可以根据实际操作习惯,选择其他不同的登录方式:
使用远程登录软件登录 Linux 实例
使用 SSH 登录 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 服务已成功启动。

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

步骤3:配置 vsftpd
1. 执行以下命令,为 FTP 服务创建一个 Linux 用户,本文以 ftpuser 为例。
useradd ftpuser
2. 执行以下命令,设置 ftpuser 用户的密码。
passwd ftpuser
输入密码后请按 Enter 确认设置,密码默认不显示,本文以 tf7295TFY 为例。
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=NOlocal_enable=YESwrite_enable=YESchroot_local_user=YESchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_listlisten=YES
6.2 在行首添加 #,注释 listen_ipv6=YES 配置参数,关闭监听 IPv6 sockets。
#listen_ipv6=YES
6.3 添加以下配置参数,开启被动模式,设置本地用户登录后所在目录,以及云服务器建立数据传输可使用的端口范围值。
local_root=/var/ftp/testallow_writeable_chroot=YES#pasv_enable=YES 被动模式,pasv_enable=NO 主动模式pasv_enable=YES#请修改为您的 Linux 云服务器公网 IPpasv_address=xxx.xx.xxx.xxpasv_min_port=40000pasv_max_port=45000
7. 按 Esc 后输入 :wq 保存后退出。
8. 执行以下命令,创建并编辑 chroot_list 文件。
vim /etc/vsftpd/chroot_list
9. 按 i 进入编辑模式,输入用户名,一个用户名占据一行,设置完成后按 Esc 并输入 :wq 保存后退出。
设置的用户将会被锁定在主目录,您若没有设置例外用户的需求,可跳过此步骤,输入 :q 退出文件。
10. 执行以下命令,重启 FTP 服务。
systemctl restart vsftpd
步骤4:设置安全组
搭建好 FTP 服务后,您需要根据实际使用的 FTP 模式给 Linux 云服务器放通入站规则,详情请参见 添加安全组规则。
大多数客户端机器在局域网中,IP 地址是经过转换的。如果您选择了 FTP 主动模式,请确保客户端机器已获取真实的 IP 地址,否则可能会导致客户端无法登录 FTP 服务器。
主动模式:放通端口21。
被动模式:放通端口21,及 修改配置文件 中设置的 pasv_min_port 到 pasv_max_port 之间的所有端口,本文放通端口为40000 - 45000。
步骤5:验证 FTP 服务
您可通过 FTP 客户端软件、浏览器或文件资源管理器等工具验证 FTP 服务,本文以客户端的文件资源管理器为例。
1. 打开客户端的 IE 浏览器,选择工具 > Internet 选项 > 高级,根据您选择的 FTP 模式进行修改:
主动模式:取消勾选“使用被动 FTP”。
被动模式:勾选“使用被动 FTP”。
2. 打开客户端的计算机,在路径栏中访问以下地址。如下图所示:
ftp://云服务器公网IP:21

3. 在弹出的登录身份窗口中输入 配置 vsftpd 中已设置的用户名及密码。
本文使用的用户名为 ftpuser,密码为 tf7295TFY。
4. 成功登录后,即可上传及下载文件。
附录
设置 FTP 主动模式
主动模式需修改的配置如下,其余配置保持默认设置:
#禁止匿名用户登录anonymous_enable=NO#支持本地用户登录local_enable=YES#全部用户被限制在主目录chroot_local_user=YES#启用例外用户名单chroot_list_enable=YES#指定用户列表文件,该列表中的用户不被锁定在主目录chroot_list_file=/etc/vsftpd/chroot_list#监听IPv4 socketslisten=YES#在行首添加#注释掉以下参数#listen_ipv6=YES #关闭监听IPv6 sockets#添加下列参数allow_writeable_chroot=YES#设置本地用户登录后所在的目录local_root=/var/ftp/test
按 Esc 后输入 :wq 保存后退出,并前往 步骤8 完成 vsftpd 配置。
FTP 客户端上传文件失败
问题描述
Linux 系统环境下,通过 vsftp 上传文件时,提示如下报错信息。
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> ls500 Illegal PORT command.500 Unknown command.425 Use PORT or PASV first.
解决方法
方式一:
退出当前 ftp,采用被动模式登录,命令如下:
“ftp -p ftpuser@ip” #平台设置为被动模式时,可以用该命令登录。
方式二:
登录成功后,在 ftp 模式下执行 passive 设置被动模式,再次执行 passive,被动模式会关闭变为主动模式,命令如下:
bash>ftp ftpuser@ipConnected to ip.220 (vsFTPd 3.0.2)331 Please specify the password.Password:230 Login successful.ftp> passivePassive mode on.
问题描述
ftp 登录成功后,执行命令如下报错。
ftp> ls550 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 命令。