现象:用户反馈ftp无法登陆,ssh登陆是正常的,在登陆ftp的时候提示错误:连接接受发送的数据确认失败,新建ftp站点同样有提示错误:服务器端接口异常,ftp站点添加失败。
1.解决方案1
分析过程及解决方案:我们入机器后查看,确认是/etc/vsftpd/vsftpd.conf,用户主动模式和被动模式设置错误导致。
在/etc/vsftpd/vsftpd.conf文件里用户的源文件是这样的:
listen=YES
anonymous_enable=NO
use_localtime=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=NO
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=NO
idle_session_timeout=180
data_connection_timeout=120
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to www.net.cn FTP service.
chroot_list_enable=YES
chroot_list_file=/etc/ftpchroot
ls_recurse_enable=YES
pam_service_name=vsftpd
userlist_enable=YES
log_ftp_protocol=YES
max_per_ip=3
pasv_enable=YES
pasv_max_port=30000
pasv_min_port=30000
设置出错的原因分析:
在上述/etc/vsftpd/vsftpd.conf文件中connect_from_port_20=YES 是 当主动模式开启的时候,是否启用默认的20端口监听的意思
pasv_enable=YES
pasv_max_port=30000
pasv_min_port=30000这个是用被动模式进行设置
被动模式正确设置为:
PASV_enable=YES 开启被动模式
PASV_min_port=%number% 被动模式最低端口
PASV_max_port=%number% 被动模式最高端口
用户的被动模式的端口最低和最高都是30000,所有pasv_max_port=30000 pasv_min_port=30000是配置错误的。
2.解决方案:
1)我们将connect_from_port_20=YES这话主动模式的注释掉
2)修改被动模式配置
pasv_enable=YES
pasv_max_port=30000
pasv_min_port=30000
改为
pasv_enable=YES
pasv_max_port=30000
pasv_min_port=25000
3)重启vsftp后可以登录。
3.关于ftp的主动模式和被动模式设置可以参考http://zhidao.baidu.com/question/279862735.html