前言
今天是阿里云7天训练营的第一天,虽说万事开头难,但没想到我竟然难在了最后的测试环节,百思不得其解。在学校学习Linux时老师也教过我们搭建FTP服务,可能时间有点久,忘记了某些关键步骤。不过好在经过群里小伙伴们的耐心解答,我终于在关闭防火墙后完成了测试。
一、连接ECS服务器
1.创建资源
- 如果有ECS实例的话可以跳过这步
(1)进入开发者云体验实验室选择 基于ECS搭建FTP服务
(2)选择基于ECS搭建FTP服务,之后在左侧点击免费开通
- 说明:资源创建过程需要1-3分钟。完成实验资源的创建后,可以通过 云产品资源 查看实验中所需的资源信息,例如:IP地址、用户名、密码等。
2.远程连接ECS服务器
- 方法一
(1)win+R调出“运行”窗口,输入cmd然后回车进入命令行窗口
检查系统中是否安装有ssh工具:
C:\Users\Administrator> ssh -V #大写V,小写的不行
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5 #出现这个就说明已安装。
如果没装的话需要下载安装OpenSSH
(2)利用连接命令连接ECS:
C:\Users\Administrator> ssh root@XXX.XXX.XXX.XXX #用户名一般都是root,@后面是公网IP
(3)按照提示输入yes,并输入密码
-
一定要输全yes,只输y不行
-
输入密码时不会回显,输入错的话直接回车,重新输入
-
密码的“I”,可能是大写i也可能是小写L
(4)登录成功后前面会显示以下内容
- 方法二
(1)下载免费版的Xshell,输入信息后会向你的邮箱发送下载链接,在邮箱里点击链接,下载安装即可。
(2)点击新建会话
(3)如图所示填写连接信息
(4)然后填写用户身份验证信息
(5)连接成功后也会显示
Welcome to Alibaba Cloud Elastic Compute Service !
二、vsftpd
1.安装vsftpd
(1)先查看是否安装了vsftpd
rpm -qa | grep vsftpd
vsftpd-3.0.2-28.el7.x86_64
(2)若未安装则用yum源安装
yum install -y vsftpd
(3) 运行以下命令设置FTP服务开机自启动
systemctl enable vsftpd.service
(4) 运行以下命令查看FTP服务监听的端口
netstat -antup | grep ftp
2.配置vsftpd
- 匿名用户模式和本地用户模式只可同时配置一种,为了进行测试,这里选择本地用户模式
(1)为FTP服务创建一个Linux用户
adduser ftptest #用户名可以随意设置,不过自己要记得,测试时需要填写用户名和密码
(2)为用户设置密码
- 不能使用过于简单的密码,如“123456”
passwd ftptest #密码不要太难,测试时需要自行填写
(3)创建一个供FTP服务使用的文件目录
mkdir /var/ftp/test
(4)更改/var/ftp/test目录的拥有者为ftptest
chown -R ftptest:ftptest /var/ftp/test
(5)修改vsftpd.conf配置文件
- 配置FTP为主动模式请执行如下命令:
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 #设置本地用户登录后所在的目录
- 配置FTP为被动模式请执行如下命令:
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 #设置被动模式下,建立数据传输可使用的端口范围的最大值
(6)在/etc/vsftpd目录下创建chroot_list文件,并在文件中写入例外用户名单
- 即使没有例外用户也必须创建此文件
vim /etc/vsftpd/chroot_list
(7)重启FTP服务
systemctl restart vsftpd.service
三、配置安全组
(1)进入 ECS控制台
(2)在左侧导航栏,单击 网络与安全→ 安全组
(3)选择需要配置的安全组,在操作列中,单击 配置规则
(4)如图,选择安全组规则的规则方向,单击入方向→ 手动添加
(5)按如下方式设置
- 授权策略:允许
- 协议类型:全部
- 端口范围:-1/-1
- 优先级:1
- 授权对象:0.0.0.0/0
四、客户端测试
FTP客户端、Windows命令行工具或浏览器均可用来测试FTP服务器
- 如果选择的是主动模式则需要修改Internal选项,取消勾选使用“被动FTP”
(1)在浏览器或者文件管理器的地址栏输入
ftp://<FTP服务器公网IP地址>:FTP端口
会弹出以下界面
(2)按提示输入当时设置的用户名和密码,我这里的用户是ftptest
输入无误后点击确定,会显示以下内容:
五、其他问题
- 若无法弹出上面的输入框,可以试试关闭服务器的防火墙
输入以下命令:
systemctl stop firewalld
阿里云高校计划
阿里云高校计划,陪伴两千多所高校在校生云上实践、云上成长。在这里你可以领用免费的cpu资源,还可以参加免费训练营,实践提高:https://developer.aliyun.com/adc/student/