参考文档地址:https://help.aliyun.com/document_detail/92048.html
配置环境
安装vsftpd
-
使用Xshell远程连接linux实例(官方可下载免费版,填写邮箱信息,不商用即可。点击下载) -
运行以下命令安装vsftpd yum install -y vsftpd
-
运行以下命令设置 FTP 服务器开机启动 systemctl enable vsftpd.service
-
启动 FTP 服务 systemctl start vsftpd.service
systemctl restart vsftpd.service
systemctl status vsftpd. service
-
查看 FTP 服务器状态 netstat -antup | grep vsftpd
出现下面的图片表示成功
启动时错误处理
Job for vsftpd.service failed because the control process exited with error code. See “systemctl status vsftpd.service” and “journalctl -xe” for details.
配置vsftpd
? 配置被动模式下本地用户访问FTP服务器的配置方法
-
为FTP创建一个Linux用户 adduser ftpuser
userdel ftpuser
-
修改该用户的密码 passwd ftpuser
-
创建一个共FTP服务器使用的文件目录 mkdir /var/ftp/test
-
创建测试文件 touch /var/ftp/test/testfile.txt
-
更改 /var/test/test 目录的拥有者为 ftpuser chown -R ftpuser:ftpuser /var/ftp/test
-
修改 vsftpd.conf 配置文件
-
按 i 进入编辑模式 -
配置 FTP 服务器为被动模式,具体的配置参数说明如下: #除下面提及的参数,其他参数保持默认值即可。
#修改下列参数的值:
#禁止匿名登录FTP服务器。
anonymous_enable=NO
#允许本地用户登录FTP服务器。
local_enable=YES
#监听IPv4 sockets。
listen=YES
#关闭监听IPv6 sockets。
listen_ipv6=NO
#在配置文件的末尾添加下列参数
#设置本地用户登陆后所在目录
local_root=/var/ftp/test
#全部用户被限制在主目录
chroot_local_user=YES
#启用例外用户名单
chroot_list_enable=YES
#指定例外用户列表文件,列表中用户不被锁定在主目录
chroot_list_file=/etc/vsftpd/chroot_list
#开启被动模式
pasv_enable=YES
allow_writeable_chroot=YES
#本教程中为Linux实例的公网IP。
pasv_address=<FTP服务器公网IP地址>
#设置被动模式下,建立数据传输可使用的端口范围最小值
#建议把端口范围设置在比较高的范围内,例如50000,50010,有助于提高访问FTP服务器的安全性
pasv_min_port=<port number>
#设置被动模式下,建立数据传输可使用的端口范围的最大值
pasv_max_port=<port number>
-
按 ESC 键,输入 :wq 并回车就保存退出 ,若 :q! 并回车就不保存退出 -
创建 chroot_list 文件,即使不存用户也要创建 vim /etc/vsftpd/chroot_list
- 然后按
i 添加用户,然后按 :wq 回车,保存并出编辑
接下来就是进行客户端连接测试,这里就不写具体过程(使用ftp软件连接测试即可),只是介绍一下测试时产生的问题,并附上解决方案
客户端测试异常
-
检查客户端设置传输模式为主动模式 -
检查 vsftpd.conf 配置文件 #开启被动模式
pasv_enable=YES
allow_writeable_chroot=YES
# 设置被动模式下,建立数据传输可使用的端口范围
# 设置端口最小值
pasv_min_port=51000
# 设置端口最大值
pasv_max_port=51010
-
重启 vsftpd 服务器,这里重启完后可以先测试能否连接,若不能则继续下面的步骤 -
确保在 阿里云安全组中配置了该端口范围 -
确认防火墙是否开启该端口范围( 这里为CentOs7 ,其他版本防火墙可能不一致)
- 查看防火墙开启的端口列表
firewall-cmd --zone=public --list-ports
- 开启防火墙端口
firewall-cmd --zone=public --add-port=51000-51010/tcp --permanent
- 重启防火墙
firewall-cmd --reload
|