工具箱里的FTP(Pure-FTPd)无法连接

版本:v2.0.0-beta.3(v2.0.0-beta.2/1均无法使用)
安装方式:计划任务的脚本库 和 使用手册里的命令行方式均尝试过
防火墙:21 39000-40000端口均已放开 (也尝试过不安装防火墙所有端口全部放开)
FTP添加的用户:www / root / admin / unbutu 等均添加尝试过
问题:使用后台添加的FTP用户和生成的密码尝试用FTP软件登录,提示530 Login authentication failed

FTP链接详细日志:

状态: 正在连接 150..:21…
状态: 连接建立,等待欢迎消息…
状态: 明文 FTP 不安全。请切换到 FTP over TLS。
命令: USER www
响应: 331 User www OK. Password required
命令: PASS ******
响应: 530 Login authentication failed
错误: 严重错误: 无法连接到服务器

使用命令【 sudo pure-pw list】可以看到FTP是存在的

问题会100%复现,尝试过N台服务器新装均出现此问题。

还有一个比较致命的问题就是,当时FTP添加了 root / unbutu 这两个用户名,结果删除这两个用户名账户的时候貌似会删除系统用户导致用户绑定的SSH秘钥失效无法登陆,这个问题也尝试过会复现。

问了AI给的答案是:
1、你 FTP 登录时服务器在用 PAM(系统用户认证)验证,而非你配置的 PureDB 虚拟用户数据库。
2、虚拟用户功能没有生效。

ubuntu 服务器吗?啥版本的

是的,乌班图,但使用CENTOS和DEBIAN也是同样的问题。一开始不能用,后面跟着AI的建议调调调不知道哪步就突然又好了,但是每次调好的步骤定位不到,比如调试时通过A方法让FTP正常了但是重装系统后直接使用A方法发现还是不行,结果又调调调发现在B方法的时候又正常了, 但是下一次直接通过B方法还是不行。总感觉这个 Pure-FTPd像是需要很久的启动时间一样,但是你装好什么不操作的话他就一直不会好,操作了又定位不到是在哪一步恢复正常的,纯玄学…我看这个问题很早之前宝塔论坛也有,那边帖子里也比较玄学没明确的解决办法,但是后续版本就好了。

目前只能用SFTPGO这个工具才能正常实现FTP功能~

你们可以用一个新环境测试一下, Pure-FTPd按照计划任务的命令和手册里的方式直接装应该也用不了

我用的 Ubuntu,我检查了一下计划任务里面的安装 Pure-FTPd这个的命令详情。我怀疑 configure_pureftpd 这块没有脚本没有执行。

因为脚本里判断 pure-ftpd.conf 文件存在,会创建一个 pure-ftpd.conf.bak,这个文件没看到。
如果 pure-ftpd.conf文件不存在,会执行chmod 644 /etc/pure-ftpd/pureftpd.pdb,但是 pureftpd.pdb 这个文件的权限我看到是 600。

所以,参考官网文档+这个脚本,我首先修改了 pure-ftpd.conf 文件:

# 开启日志
VerboseLog yes
# 拒绝匿名登录
NoAnonymous yes
PAMAuthentication no
PassivePortRange 39000 40000
PureDB /etc/pure-ftpd/pureftpd.pdb

然后执行命令:

        chmod 644 /etc/pure-ftpd/pureftpd.pdb
        echo '/etc/pure-ftpd/pureftpd.pdb' > /etc/pure-ftpd/conf/PureDB
        echo yes > /etc/pure-ftpd/conf/VerboseLog 
        echo yes > /etc/pure-ftpd/conf/NoAnonymous
        echo '39000 40000' > /etc/pure-ftpd/conf/PassivePortRange
        echo 'no' > /etc/pure-ftpd/conf/PAMAuthentication
        echo 'no' > /etc/pure-ftpd/conf/UnixAuthentication
        echo 'clf:/var/log/pure-ftpd/transfer.log' > /etc/pure-ftpd/conf/AltLog
        ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50puredb

然后重启pure-ftpd,之后我就能正常连上去了