我知道这个问题已经被问过无数次了,但是我觉得我已经尝试了所有可能的解决方案,但似乎都没有效果。
我读过并尝试使用的一些文章:
vsftpd 出现错误 530 登录不正确,且无法使用有效凭据以及其中一个链接到的 5 篇文章。 AskUbuntu - vsftpd 530 登录不正确还有约 10 个提供相同解决方案。 LinuxQuestions.org - vsftpd 登录不正确
我曾经为主动和被动 FTP 启用过 UFW(允许 20:22/tcp 和 20000:20200/tcp),但后来禁用了整个 UFW。
我尝试使用 xinetd,但它的工作效果与 vsftpd-standalone 一样好,除了错误“500 OOPS:为 IPv4 和 IPv6 运行两个 vsftpd 副本”和“500 OOPS:无法绑定正在监听的 IPv4 套接字”。然而,在解决这两个问题后,又出现了同样的问题(错误 530)。
我的正常配置文件(/etc/vsftpd.conf)如下所示:
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
ftpd_banner=Welcome to the 'server name' FTP server.
deny_email_enable=YES
banned_email_file=/etc/vsftpd.banned_emails
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
secure_chroot_dir=/etc/vsftpdjail
listen=YES
#listen_ipv6=YES
ssl_enable=YES
force_local_logins_ssl=NO
force_local_data_ssl=NO
#ssl_tlsv1=YES
#ssl_sslv2=NO
#ssl_sslv3=NO
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/certs/vsftpd.pem
require_ssl_reuse=NO
pasv_min_port=20000
pasv_max_port=20200
pasv_enable=YES
pam_service_name=vsftpd
但是,从deny_email_enable
上向下注释所有内容(禁用被动、ssl 和 pam),除“listen=YES”外,不会产生其他结果。
vsftpd.service 在 systemctl 中启用并启动
xinetd.service 在 systemctl 中被禁用并停止(经过一些测试)
PAM 文件(/etc/pam.d/vsftpd)包含:
#%PAM-1.0
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
#@include common-account
#@include common-session
#@include common-auth
auth required pam_shells.so
所引用的文件确实存在,并且具有权限:root:root 744
我的用户名不在 /etc/ftpusers 中
我的用户的登录 shell (/bin/bash) 位于 /etc/shells 中
我的用户在 /etc/passwd 中
每当我尝试登录时,我都会一次又一次地收到同样的错误:
Connecting to 192.168.178.49:21...
Connection made, awaiting welcome message...
Initializing TLS...
Checking certificate...
Established TLS-connection.
USER username
331 Please specify the password.
PASS ************
530 Login incorrect.
Fatal error: Can't connect to server.
‘sudo netstat -tulpn’显示:
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 342/vsftpd
/var/log/vsftpd.log 一遍又一遍地显示相同的消息:
CONNECT: Client "192.168.178.69"
[username] FAIL LOGIN: Client "192.168.178.69"
无需任何进一步的信息。(使用与我通过 SSH 和本地服务器登录时相同的登录凭据)
在连续 6 个小时研究这个问题后,我完全没有主意了。因此,任何帮助都非常感谢。
另外,系统信息:
Processor: 2xIntel Pentium [email protected] (intel-ucode IS installed) OS: Arch Linux 5.0.9-arch1-1-ARCH x86_64 (Up-to-date and installed today) RAM: 8192MB Internet both Server and Client: 1Gbps cat 5e cable directly to modem No firewall on client or modem
编辑1:编辑/etc/pam.d/vsftpd 中的拼写错误
答案1
只是为了增加无数的答案 - 我为用户帐户分配了一个非标准 shell,需要将其添加到 /etc/shells。
答案2
在我发布问题后,我又尝试了一段时间,但无济于事。快进一天,我决定彻底清除操作系统,重新安装,并将 vsftpd 作为 OS 基本知识之后要做的第一件事。因此,我不确定我所做的更改是否解决了问题,或者在操作系统的初始安装过程中是否出了问题,但无论如何,我们还是开始吧:
我完全不明白为什么其他遇到同样问题的人没有给出任何解决方案,直到我读到Arch Linux vsftpd 故障排除页面的最后一条其中指出,PAM 已于 2019 年更新(!),并且当地的用户现在的工作方式不同。还提供了一个示例 /etc/pam.d/vsftpd 文件:
#%PAM-1.0
account required pam_listfile.so onerr=fail item=user sense=allow file=/etc/vsftpd.user_list
account required pam_unix.so
auth required pam_unix.so
突然间,它就起作用了。
当我测试并启用“匿名”用户时,我只在配置文件中添加了一行,然后出现了“目录列表”错误。同一页面的故障排除部分也给出了建议。
seccomp_sandbox=NO
但我真的怀疑这是否会对本地用户登录产生任何改变,这是我最初的疑问。
答案3
Wisegay,我认为这可能是用户目录权限问题,请检查一下网址https://help.ubuntu.com/community/vsftpd用于用户目录权限和 pam 文件内容。希望这对您有所帮助。
答案4
有一段时间没使用 vsftpd 了,忘记了这个好530: login incorrect
东西。
我花了几个小时尝试 Google 上所有可能的解决方案,最后终于找到了问题的根本原因:
虽然pam_service_name=ftp
记录为默认值,但默认最小配置不起作用(RHEL7.5,vsftpd3.0.2)抛出login incorrect
错误。
pam_service_name=vsftpd
设置后错误就消失了/etc/vsftpd/vsftpd.conf