搭建FTP服务器(Linux)
简介
FTP(File Transfer Protocol,文件传输协议)是一种在计算机之间通过网络传输文件的标准协议,采用客户端-服务器架构,允许用户从远程服务器上传、下载、重命名、删除、查看文件和目录结构等操作。FTP有两种传输模式,区别如下:
- 主动模式(Active Mode)
- 客户端通过控制连接(默认端口21)向服务器发送命令,服务器随后主动通过数据连接(默认端口20)连接客户端指定的端口传输数据。
- 适用于客户端网络环境无防火墙限制的场景,但可能因防火墙阻止服务器主动连接而失效。
- 被动模式(Passive Mode)
本文介绍了如何使用Linux操作系统的L实例搭建FTP服务器。该指导具体操作以CentOS 7.2 64位操作系统为例。
前提条件
已购买Linux操作系统的L实例,且L实例为“运行中”状态。
操作步骤
- 远程登录L实例。
- 登录Flexus应用服务器L实例控制台。
- 在资源卡片上,单击
图标,单击“重置密码”,根据界面提示设置L实例的密码。 L实例无初始密码,创建L实例后,如需登录云主机,请先设置L实例的密码。如果已经设置过密码,请跳过此步骤。
更多详情请参见重置Flexus L实例密码。
- 单击资源卡片上的“远程登录”按钮,在弹出的登录窗口中,单击“VNC登录”,根据界面提示输入用户名密码登录Flexus L实例。用户名为root,密码为上一步设置的密码。
更多登录方式请参见登录方式概述。
- 安装vsftpd。vsftpd全称是“very secure FTP daemon”,是一款在Linux发行版中使用较多的FTP服务器软件。
- 执行以下命令安装vsftpd。
yum install -y vsftpd
回显如下类似信息时,表示软件安装成功。

- 执行以下命令设置FTP服务开机自启动。
systemctl enable vsftpd.service
- 执行以下命令启动FTP服务。
systemctl start vsftpd.service
- 执行以下命令查看FTP服务端口。
netstat -antup | grep ftp
回显如下类似信息。

- 执行以下命令安装vsftpd。
- 配置vsftpd。
vsftpd安装后默认开启了匿名FTP的功能,使用匿名FTP,用户无需输入用户名密码即可登录FTP服务器,但没有权限修改或上传文件。用户如果试图使用Linux操作系统中的账号登录服务器,将会被vsftpd拒绝,但可以在vsftpd里配置用户账号和密码登录。以下操作以在vsftpd 里配置用户账号和密码登录FTP服务器为例。
- 执行以下命令创建“ftpadmin”用户。
此处“ftpadmin”用户为示例,可根据实际情况创建相应的用户。
useradd ftpadmin
- 执行以下命令并按照提示设置“ftpadmin”用户密码。
passwd ftpadmin
- 执行以下命令创建供FTP使用的文件目录,此处以“/var/ftp/work01”为例。
mkdir /var/ftp/work01
- 执行以下命令将创建的文件目录所有者改为用于登录FTP的本地用户。
chown -R ftpadmin:ftpadmin /var/ftp/work01
- 修改“vsftpd.conf”配置文件。
- 执行以下命令打开配置文件“vsftpd.conf”。
vi /etc/vsftpd/vsftpd.conf
- 按i键进入编辑模式。
- 修改打开的“vsftpd.conf”文件。
可根据实际需求选择将FTP配置为主动模式或者被动模式。如果华为云上的服务器需要通过公网IP地址访问华为云上的实例搭建的FTP服务器时,需要将FTP服务器配置为被动模式。
- 主动模式需要配置的参数如下:
#设置以下参数,不允许匿名登录FTP服务器,允许本地用户登录FTP服务器,并指定FTP本地用户使用的文件目录。 anonymous_enable=NO #不允许匿名登录FTP服务器 local_enable=YES #允许本地用户登录FTP服务器 local_root=/var/ftp/work01 #FTP本地用户使用的文件目录 #设置以下参数,限制用户只能访问自身的主目录。 chroot_local_user=YES #所有用户都被限制在其主目录 chroot_list_enable=YES #启用例外用户名单 chroot_list_file=/etc/vsftpd/chroot_list #例外用户名单 allow_writeable_chroot=YES
- 被动模式除了需要配置主动模式所需的所有参数外,还需要配置的参数如下:
#设置以下参数,配置FTP支持被动模式。并指定FTP服务器的公网IP地址,以及可供访问的端口范围,端口范围请根据实际环境进行设置。 listen=YES listen_ipv6=NO pasv_address=xx.xx.xx.xx #FTP服务器的公网IP地址 pasv_min_port=3000 #被动模式下的最小端口 pasv_max_port=3100 #被动模式下的最大端口
- 主动模式需要配置的参数如下:
- 按Esc键退出编辑模式,并输入:wq保存后退出。
- 在“/etc/vsftpd/”目录下创建“chroot_list”文件。
touch chroot_list
“chroot_list”文件是限制在主目录下的例外用户名单。如果需要设置某个用户不受只可以访问其主目录的限制,可将对应的用户名写入该文件。如果没有例外也必须要有“chroot_list”文件,内容可为空。
- 执行以下命令打开配置文件“vsftpd.conf”。
- 执行以下命令重启vsftpd服务使配置生效。
systemctl restart vsftpd.service
- 执行以下命令创建“ftpadmin”用户。
- 设置安全组。
搭建好FTP站点后,需要在L实例安全组的入方向添加放行FTP端口的规则,具体步骤参见配置Flexus L实例安全组规则。放通的端口请参考表1。
- 如果使用主动模式,需要在安全组中放行FTP站点使用的端口(默认为21)。
- 如果使用被动模式,需要在安全组中同时放行FTP站点使用的端口(默认为21)和vsftpd.conf”文件设置的 pasv_min_port 到 pasv_max_port 之间的所有端口(本示例放通端口为3000-3100)。
表1 设置安全组规则 优先级
策略
类型
协议端口
源地址
1
允许
IPv4
自定义TCP:20-21端口
0.0.0.0/0
1
允许
IPv4
自定义TCP:1024-65535间的端口(例如3000-3100)
0.0.0.0/0
安全组入方向规则的源地址设置为0.0.0.0/0或::/0,表示允许或拒绝所有外部IP地址访问您的实例,如果端口暴露到公网,可能导致网络入侵,造成业务中断、数据泄露或数据勒索等严重后果。建议您将安全组规则设置为仅允许已知的IP地址访问,如下一步骤中要访问FTP服务器的客户端的IP地址。
- 客户端测试。
打开客户端的计算机,可以是本地Windows计算机或者其他Windows系统的云服务器,在路径栏输入 “ftp://FTP服务器公网IP地址:FTP端口”,其中FTP服务器公网IP地址即本示例中的L实例公网IP地址,FTP端口不填则默认访问21端口。
弹出输入用户名和密码的对话框表示配置成功,正确的输入用户名和密码后,即可对 FTP 文件进行相应权限的操作。
- 如果FTP服务器配置为主动模式,客户端使用此方法访问FTP站点时,需要对IE浏览器进行设置,才能打开FTP的文件夹。打开IE浏览器,选择“工具 > Internet 选项 > 高级”。勾选“启用FTP文件夹视图”,取消勾选“使用被动FTP”。
- 使用浏览器访问FTP服务器出错时,建议您清除浏览器缓存后再尝试。
您也可以在客户端上下载FileZilla进行文件传输等操作。