直接上菜:
本次搭建使用的是被动模式,主动模式修改配置即可。
1、更新软件包(可选)
sudo yum update
2、安装vsftpd
sudo yum install vsftpd
3、配置 vsftpd
建议先备份下原始配置文件,免得到时候有问题还原老火(可选)
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
4、编辑 vsftpd 配置文件:
sudo vi /etc/vsftpd/vsftpd.conf
确认以下key-value对应正确:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
local_root=/home/$USER
user_sub_token=$USER
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
## 主动模式忽略以下三个配置
pasv_enable=YES
pasv_min_port=30010 # 端口范围 被动模式需要
pasv_max_port=30015 # 端口范围
pasv_address={{vsftpd服务器的公网IP}}
5、重启vsftp服务
sudo systemctl restart vsftpd
6、打开端口
如果是firewall:
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --reload
如果是iptables:
sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
条件允许的情况下,可以先把防火墙关闭了,等调试完成后再开防火墙;
被动模式还需要将端口范围的端口都放开;
自定义ftp端口,自行修改
7、创建FTP用户
假设用户名为:ftpuser
sudo adduser ftpuser
sudo passwd ftpuser
8、创建FTP目录并设置权限
sudo mkdir -p /home/ftpuser/ftp
sudo chown -R ftpuser:ftpuser /home/ftpuser/ftp
sudo chmod 755 /home/ftpuser/ftp
接下来就可以测试登录了。
问题排查:
1、如果你禁止了ftp用户通过ssh登录(执行过这个命令:sudo chsh -s /sbin/nologin ftpuser),有可能会被拒绝登录,
解决办法:
方法一: 要么开放ftp用户允许ssh登录,这种做法不推荐,不介意当我没说
方法二: 将 /sbin/nologin
添加到 /etc/shells
文件中
echo "/sbin/nologin" | sudo tee -a /etc/shells
方法三:修改 PAM 配置文件
vi /etc/pam.d/vsftpd
注释掉或删除以下行
#auth required pam_shells.so
2、仍然拒绝登录
检查FTP用户是否被正确添加到 /etc/vsftpd/user_list
文件中
且 FTP用户未被列在 /etc/vsftpd/ftpusers
文件中
最后重启vsftpd
sudo systemctl restart vsftpd
要是还有问题,先查看下vsftpd的日志:
sudo journalctl -u vsftpd -f
日志都不能排查,用工具抓包看看。
实在不行,Q我(擦汗~~!)