Day1:体验ECS搭建FTP全流程

使用ECS快速从全新CentOS系统搭建FTP服务还是相对比较容易的。具体过程如下:

申请ECS实例

在本次教学场景中是一键完成的。实际在阿里云平台中需要根据需求的机器配置购买ECS实例,配置操作系统镜像、网络安全组、登录凭证(密码/证书)后,再进行下一步操作,这里按下不表。

远程连接ECS实例

教学场景中的指南推荐使用系统自带的终端工具以及OpenSSH来连接,实际上我们还可以使用其他优秀的第三方终端工具来远程连接ECS实例。这里我们采用Xshell(该软件对家庭用户/测试用途免费)。
按照默认设置(也没什么好配置的,能配置的只有安装位置)安装好后Xshell后,打开软件,在弹出的会话窗口中点击新建按钮,即可填写ECS服务器外网IP(即弹性IP)地址即可点击连接。
Day1:体验ECS搭建FTP全流程
Day1:体验ECS搭建FTP全流程
稍后Xshell会提示首次连接主机的连接公钥确认。该提示说明本地计算机是第一次使用Xshell连接这台远程服务器,需要对主机的身份确认。这里我们可以大胆放心信任阿里云的ECS,点击确认即可。
Day1:体验ECS搭建FTP全流程
接下来会提示登录用户名和密码(忘记截图了TAT),在教学场景中已在页面上给出,实际在阿里云平台操作时已在购买ECS实例时配置好。
Day1:体验ECS搭建FTP全流程
然后界面上即是CentOS默认的bash提示符:
Day1:体验ECS搭建FTP全流程
说明此刻已经成功登录到远程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服务器。这里以浏览器为例:

  1. 打开Chrom浏览器,在地址栏中输入ftp://<FTP服务器公网IP地址>:FTP端口,FTP服务器公网IP地址为ECS服务器的弹性IP地址。例如:ftp://139.0.0.1:21。当然,由于本文中未修改FTP默认端口,所以不加端口号也是可以的,即ftp://139.0.0.1
  2. 在弹出的对话框中,输入之前设置好的用户名和密码。
  3. 成功界面如下,此时可对FTP文件进行相应权限的操作。

Day1:体验ECS搭建FTP全流程

说明:使用浏览器访问FTP服务器出错时,建议您清除浏览器缓存后再尝试。

上一篇:iOS开发-扩大按钮的可点击区域


下一篇:hutool的定时器如何读取application文件