使用环境:
腾讯云轻量云服务器
Ubuntu 18.04.4 LTS
1.安装VSFTPD
sudo apt-get install vsftpd -y
2.安装完成后,VSFTPD 会自动启动,通过 netstat 命令查看
sudo netstat -nltp | grep 21
成功启动信息如下:
如果没有启动完成则使用如下命令启动
sudo systemctl start vsftpd.service
3.配置用户访问目录
3.1 新建用户目录
sudo mkdir /home/uftp
3.2 创建一个新用户
sudo useradd -d /home/uftp -s /bin/bash uftp
3.3 为用户设置密码
sudo passwd uftp
3.4 删除掉 pam.d 中 vsftpd,因为该配置文件会导致使用用户名登录 ftp 失败:
sudo rm /etc/pam.d/vsftpd
3.5 限制用户 uftp 只能通过 FTP 访问服务器,而不能直接登录服务器:
sudo usermod -s /sbin/nologin uftp
4.修改 vsftpd 配置
sudo chmod a+w /etc/vsftpd.conf
listen=YES
listen_ipv6=NO
# 限制用户对主目录以外目录访问
chroot_local_user=YES
allow_writeable_chroot=YES
# 指定一个 userlist 存放允许访问 ftp 的用户列表
userlist_deny=NO
userlist_enable=YES
# 记录允许访问 ftp 用户列表
userlist_file=/etc/vsftpd.user_list
# 不配置可能导致莫名的530问题
seccomp_sandbox=NO
# 不允许文件上传
write_enable=NO
#开始被动模式
pasv_enable=YES
#限制被动模式服务器的端口范围
pasv_min_port=48001
pasv_max_port=48005
#设置被动模式的外网ip地址
pasv_address=x.x.x.x
pasv_addr_resolve=YES
#当值为YES时,将关闭pasv模式(被动模式)安全检查;当为NO时,开启安全检查,用于确保数据连接和控制连接来自同一IP地址
pasv_promiscuous=YES
注:pasv_address是你的服务器的外网ip
5.新建文件 /etc/vsftpd.user_list,用于存放允许访问 ftp 的用户:
sudo touch /etc/vsftpd.user_list
sudo chmod a+w /etc/vsftpd.user_list
6.修改 /etc/vsftpd.user_list ,加入刚刚创建的用户:
uftp
7.设置访问权限
sudo chmod a-w /home/uftp
8.新建公共目录,并设置权限(读写)
sudo mkdir /home/uftp/public && sudo chmod 777 -R /home/uftp/public
9.重启vsftpd 服务:
sudo systemctl restart vsftpd.service
10.在服务器控制台依次开放允许
至此使用FTP客户端应该就可以连接成功。
问题记录1:
解决服务器发回了不可路由的地址。使用服务器地址代替的问题
解决方法:
listen=NO -> listen=YES
listen_ipv6=YES ->listen_ipv6=NO
问题记录2:
响应: 227 Entering Passive Mode
命令: LIST
响应: 425 Security: Bad IP connecting.
错误: 读取目录列表失败
解决方法:
# vi /etc/vsftpd/vsftpd.conf
添加:pasv_promiscuous=YES
保存退出
# service vsftpd restart
原因可参考:
https://www.cnblogs.com/wubolive/p/15907779.html