使用环境:
腾讯云轻量云服务器
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

更多推荐