基于ECS搭建FTP服务
1. 选择实验资源
本实验支持实验资源体验、开通免费试用、个人账户资源三种实验资源方式。
在实验开始前,请您选择其中一种实验资源,单击确认开启实验。
- 如果您选择的是实验资源体验,资源创建过程需要3~5分钟(视资源不同开通时间有所差异,ACK等资源开通时间较长)。完成实验资源的创建后,在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如子用户名称、子用户密码、AK ID、AK Secret、资源中的项目名称等)。
说明:实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建。
- 如果您选择的是开通免费试用,下方卡片会展示本实验支持的试用规格,可以选择你要试用的云产品资源进行开通。您在实验过程中,可以随时用右下角icon唤起试用卡片。
说明:试用云产品开通在您的个人账号下,并占用您的试用权益。如试用超出免费试用额度,可能会产生一定费用。
阿里云支持试用的产品列表、权益及具体规则说明请参考开发者试用中心。
2. 安装vsftpd
- 在实验室页面左侧,单击 图标,切换至Web Terminal,连接云服务器ECS。
如您选择的是公共资源,则会自动连接到实验室提供的云服务器ECS。
如您选择的是试用资源/个人资源,需输入ECS登录的用户名和密码进行登录。
- 运行以下命令安装vsftpd。
yum install -y vsftpd
返回如下图所示界面时,表示安装成功。
- 运行以下命令设置FTP服务开机自启动。
systemctl enable vsftpd.service
- 启动FTP服务。
systemctl start vsftpd.service
- 运行以下命令查看FTP服务监听的端口。
netstat -antup | grep ftp
返回如下图所示结果,表示FTP服务已启动,监听的端口号为 21。此时,vsftpd默认已开启匿名访问功能,您无需输入用户名密码即可登录FTP服务器,但没有修改或上传文件的权限。
3. 配置vsftpd
vsftpd(very secure FTP daemon)是一款在Linux发行版中最受推崇的FTP服务器。vsftpd支持匿名访问和本地用户模式两种访问方式。匿名访问方式任何用户都可以访问搭建的FTP服务;本地用户模式只支持添加的本地用户访问搭建的FTP服务。
说明: 匿名用户模式和本地用户模式只可同时配置一种。
本实验主要介绍被动模式下,使用本地用户访问FTP服务器的配置方法。其他模式配置方法,详情请参见手动搭建FTP站点(CentOS 7)。
- 运行以下命令为FTP服务创建一个Linux用户。本示例中,该用户名为ftptest。
adduser ftptest
- 运行以下命令修改ftptest用户的密码。运行命令后,根据命令行提示完成FTP用户的密码修改。
passwd ftptest
- 运行以下命令创建一个供FTP服务使用的文件目录。
mkdir /var/ftp/test
- 运行以下命令,创建测试文件。
该测试文件用于FTP客户端访问FTP服务器时使用。
touch /var/ftp/test/testfile.txt
- 运行以下命令更改/var/ftp/test目录的拥有者为ftptest。
chown -R ftptest:ftptest /var/ftp/test
- 依次运行以下命令,修改vsftpd.conf配置文件,配置FTP为被动模式。
注意:您需要将echo "pasv_address=<FTP服务器公网IP地址>" >> /etc/vsftpd/vsftpd.conf命令中的<FTP服务器公网IP地址>替换为本实验ECS服务器的公网IP或弹性IP。
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器 sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets 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 #开启被动模式 echo "pasv_address=<FTP服务器公网IP地址>" >> /etc/vsftpd/vsftpd.conf #本教程中为ECS服务器弹性IP echo "pasv_min_port=20" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最小值 echo "pasv_max_port=21" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最大值
- 创建chroot_list文件,并在文件中写入例外用户名单。
7.1 运行以下命令,创建chroot_list文件。
vim /etc/vsftpd/chroot_list
7.2 按i进入编辑模式。
7.3 输入例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。本示例中,没有例外用户,可以不输入例外用户名单。
7.4按ECS退出编辑模式,然后输入:wq并回车以保存并关闭文件.
说明: 没有例外用户时,也必须创建chroot_list文件,内容可为空。
- 运行以下命令重启vsftpd服务。
systemctl restart vsftpd.service
4. 配置安全组
搭建好FTP服务后,在ECS实例安全组的入方向添加规则并放行下列FTP端口。
说明: 大多数客户端位于局域网中,IP地址是经过转换的,因此ipconfig或ifconfig命令返回的IP不一定是客户端的真实公网IP地址。若后续客户端无法登录FTP服务器,请重新确认其公网IP地址。
- 单价右侧 图标,返回虚拟桌面。 双击打开桌面 FireFox ESR浏览器,在RAM用户登录框中点击 下一步,复制 云产品资源 列表中 子用户密码 粘贴(lx shell粘贴快捷键ctrl+shift+v,其他地方粘贴是ctrl+v)到浏览器 RAM用户登录界面,即可登录当前子账号。
- 单价左上角菜单按钮。
- 在展开的界面,找到云服务器ECS,进入云服务器控制台。
- 在左侧导航栏,选择实例与镜像>实例。
- 在云服务器控制台页面上方菜单栏,选择资源所在地域。例如,下图中地域切换为华东2(上海)。
说明:您可以在云产品资源列表中查看到您的云服务器ECS所在地域。
- 在实例页面,单击实例ID。
- 在实例详情页签的基本信息区域,单击安全组。
- 在安全组规则页签的访问规则区域,选择入方向>手动添加。
说明:
a. 0.0.0.0/0为允许所有IP地址访问,可以根据您本地公网IP地址或网段进行设置来增加安全性(浏览器中输入IP即可查看您本地IP地址)。
b. 为方便进行实验,当前端口范围开放所有端口,最好根据自身需求设置端口范围,例如ftp开放21端口,数据库开放3306端口等。
- 添加配置,具体配置如下图,然后单击保存。
5. 客户端测试
FTP客户端、Windows命令行工具或浏览器均可用来测试FTP服务器。(此步骤仅适用于本地用户,匿名模式无需进行测试操作)
说明:使用浏览器访问FTP服务器出错时,建议您清除浏览器缓存后再尝试。
1. 在您的本地主机,打开此电脑。
2. 在地址栏中输入ftp://<FTP服务器公网IP地址>:FTP端口,FTP服务器公网IP地址为ECS服务器的弹性IP地址。例如:ftp://127.0.0.1:21。
说明:如果您使用Mac OS系统,您可使用浏览器访问。
3. 在弹出的对话框中,输入用户名和密码(第3节中配置的用户名和密码)。
4. 登录成功界面如下,您可在FTP服务器中查看到testfile.txt文件,此时您也可对FTP文件进行相应权限的操作。
注:
如果连接时出现以下错误:
解决方法:
打开本地电脑的控制面板,找到Internet选项-高级-去掉【使用被动FTP(用于防火墙和DSL调制解调器的兼容)】前面的对勾,点击右下角应用。在访问就好了。
实验链接:https://developer.aliyun.com/adc/scenario/74b64efe414c47fbaf305957a7fb458b