使用ECS快速从全新CentOS系统搭建FTP服务还是相对比较容易的。具体过程如下:
申请ECS实例
在本次教学场景中是一键完成的。实际在阿里云平台中需要根据需求的机器配置购买ECS实例,配置操作系统镜像、网络安全组、登录凭证(密码/证书)后,再进行下一步操作,这里按下不表。
远程连接ECS实例
教学场景中的指南推荐使用系统自带的终端工具以及OpenSSH来连接,实际上我们还可以使用其他优秀的第三方终端工具来远程连接ECS实例。这里我们采用Xshell(该软件对家庭用户/测试用途免费)。
按照默认设置(也没什么好配置的,能配置的只有安装位置)安装好后Xshell后,打开软件,在弹出的会话窗口中点击新建按钮,即可填写ECS服务器外网IP(即弹性IP)地址即可点击连接。
稍后Xshell会提示首次连接主机的连接公钥确认。该提示说明本地计算机是第一次使用Xshell连接这台远程服务器,需要对主机的身份确认。这里我们可以大胆放心信任阿里云的ECS,点击确认即可。
接下来会提示登录用户名和密码(忘记截图了TAT),在教学场景中已在页面上给出,实际在阿里云平台操作时已在购买ECS实例时配置好。
然后界面上即是CentOS默认的bash提示符:
说明此刻已经成功登录到远程ECS了!
安装FTP服务器
vsftpd
(Very Secure FTP Daemon)是一款在Linux发行版中最受推崇的FTP服务器。这里我们就选择它来搭建FTP服务。
安装vsftpd
在Xshell中右键粘贴(注意不能使用Ctrl+V
粘贴,Xshell中的粘贴快捷键是Shift+Insert
,比较麻烦,还是右键粘贴快一些)
yum install -y vsftpd
返回如下所示文字时,说明安装成功!
Installed:
vsftpd.x86_64 0:3.0.2-27.el7
Complete!
启动FTP服务并设置开机自启动
注:代码中从#
开始至这一行行末都是注释,可以不复制不执行。
# 设置FTP服务开机自启动
systemctl enable vsftpd.service
# 启动FTP服务
systemctl start vsftpd.service
# 查看FTP服务监听的端口
netstat -antup | grep ftp
如果可以看到出现如下内容,表示FTP服务已启动,监听的端口号为21。
tcp6 0 0 :::21 :::* LISTEN 1443/vsftpd
此时,vsftpd默认已开启匿名访问功能,无需输入用户名密码即可登录FTP服务器,但没有修改或上传文件的权限。因此下一步需要添加修改或上传文件权限。
配置FTP服务器权限
vsftpd
支持匿名访问模式和本地用户模式两种访问方式。
匿名访问模式下任何用户都可以访问搭建的FTP服务。
本地用户模式下只支持添加的本地用户访问搭建的FTP服务。
匿名用户模式
首先需要修改配置文件vsftpd.conf
,这里直接使用CentOS自带的vim命令行编辑器编辑配置文件
vim /etc/vsftpd/vsftpd.conf
按i
键进入编辑模式,将匿名上传权限配置anon_upload_enable=YES
这一行开头的注释符#
删除。随后按ESC
键退出编辑模式,输入:wq
保存并退出vim编辑器。
然后使用下面的目录修改默认ftp根目录路径/var/ftp/pub
的读写权限:
chmod o+w /var/ftp/pub/
最后重启FTP服务:
systemctl restart vsftpd.service
注:实测这里重启FTP服务后不能马*问,需要等待个30秒左右再访问才能进入,否则连接不上。
本地用户模式
首先为FTP服务创建一个Linux用户ftptest
,供FTP登录使用,如果需要其他用户名可以自行修改命令中的ftptest
:
adduser ftptest
为ftptest
用户设置密码:
passwd ftptest
此时需要输入两次密码(回车确认密码)(又双叒忘记截图了TAT),如果密码太简单可能会提示BAD PASSWORD
,这里只是测试问题不大,实际生产实践中建议设置复杂一些的密码,且尽量禁止FTP被不必要的用户访问。
接下来,创建一个供ftptest
用户使用的文件目录并转移拥有权。
mkdir /var/ftp/test
chown -R ftptest:ftptest /var/ftp/test
然后修改FTP配置文件vsftpd.conf
。下面提供两种配置模式,如果没有特殊需要的话建议选择被动模式,以防止连接建立后无法成功传输数据,两个模式的具体区别请另行百度。
A. 主动模式版本
# 禁止匿名登录FTP服务器
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf
# 监听IPv4 sockets
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf
# 关闭监听IPv6 sockets
sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf
# 全部用户被限制在主目录
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf
# 启用例外用户名单
sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf
# 指定例外用户列表文件,列表中的用户不被锁定在主目录
sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf
echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf
# 设置本地用户登录后所在的目录
echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf
B.被动模式(推荐)
# 禁止匿名登录FTP服务器
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf
# 监听IPv4 sockets
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf
# 关闭监听IPv6 sockets
sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf
# 全部用户被限制在主目录
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf
# 启用例外用户名单
sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf
# 指定例外用户列表文件,列表中的用户不被锁定在主目录
sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf
echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf
# 设置本地用户登录后所在的目录
echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf
# 开启被动模式
echo "pasv_enable=YES" >> /etc/vsftpd/vsftpd.conf
#【需要修改命令】本教程中为ECS服务器弹性IP
echo "pasv_address=<FTP服务器公网IP地址>" >> /etc/vsftpd/vsftpd.conf
# 设置被动模式下,建立数据传输可使用的端口范围的最小值
echo "pasv_min_port=20" >> /etc/vsftpd/vsftpd.conf
# 设置被动模式下,建立数据传输可使用的端口范围的最大值
echo "pasv_max_port=21" >> /etc/vsftpd/vsftpd.conf
然后,使用vim编辑chroot_list
文件,添加例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。
vim /etc/vsftpd/chroot_list
说明:没有例外用户时,也必须创建chroot_list
文件,内容可为空,可以直接使用下面的命令创建空文件:
touch /etc/vsftpd/chroot_list
最后重启FTP服务。
systemctl restart vsftpd.service
客户端测试
FTP客户端、Windows命令行工具或浏览器均可用来测试FTP服务器。这里以浏览器为例:
- 打开Chrom浏览器,在地址栏中输入
ftp://<FTP服务器公网IP地址>:FTP端口
,FTP服务器公网IP地址为ECS服务器的弹性IP地址。例如:ftp://139.0.0.1:21
。当然,由于本文中未修改FTP默认端口,所以不加端口号也是可以的,即ftp://139.0.0.1
- 在弹出的对话框中,输入之前设置好的用户名和密码。
- 成功界面如下,此时可对FTP文件进行相应权限的操作。
说明:使用浏览器访问FTP服务器出错时,建议您清除浏览器缓存后再尝试。