Vsftpd 错误 - 530 登录不正确 - 配置文件、PAM 文件、用户设置和其他相关文件已验证后

Vsftpd 错误 - 530 登录不正确 - 配置文件、PAM 文件、用户设置和其他相关文件已验证后

我知道这个问题已经被问过和回答过无数次了,但是我按照我能找到的每一个问题和答案都找不到,因此再次向社区提出这个问题,希望有人能发现我的问题。

安装和设置过程

我的操作系统是 Ubuntu 20.04.4 LTS。

我已经安装了 vsftpd 并更新了配置文件(/etc/vsftpd.conf),如下所示:

# Run standalone
listen=NO
# Enables listening on IPv6 sockets
listen_ipv6=YES
# Allow anonymous FTP
anonymous_enable=NO
# Allow local users to log in
local_enable=YES
# Enable any form of FTP write command.
write_enable=YES
# Default umask for local users is 022 to give uploaded files and folders the correct permissions
local_umask=022
# Activate directory messages - messages given to remote users when they go into a certain directory.
dirmessage_enable=YES
# Display directory listings in local  time  zone
use_localtime=YES
# Activate logging of uploads/downloads.
xferlog_enable=YES
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
# Display login banner:
ftpd_banner=Welcome to the FTP service!
# Specify an explicit list of local users to chroot() to their homedirectory
chroot_local_user=YES
# Set a secure chroot() jail at times vsftpd does not require filesystem
secure_chroot_dir=/var/run/vsftpd/empty
# This string is the name of the PAM service vsftpd will use
pam_service_name=vsftpd
# Encrypted connections
ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
#
# Additional configuration
force_dot_files=YES
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
pasv_min_port=40000
pasv_max_port=50000

我已将用户添加到 /etc/vsftpd.userlist 文件中,并生成了证书,如下所示:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

vsftp 服务已启用并正在运行。

我已将 ufw 作为防火墙运行,并具有以下规则:

Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
20/tcp                     ALLOW       Anywhere                  
21/tcp                     ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
8080:8099/tcp              ALLOW       Anywhere                  
40000:50000/tcp            ALLOW       Anywhere                  
5432/tcp                   ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
20/tcp (v6)                ALLOW       Anywhere (v6)             
21/tcp (v6)                ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
8080:8099/tcp (v6)         ALLOW       Anywhere (v6)             
40000:50000/tcp (v6)       ALLOW       Anywhere (v6)             
5432/tcp (v6)              ALLOW       Anywhere (v6) 

我创建了我的 FTP 用户,如下所示:

sudo /sbin/useradd --home /ftp/<user>/in --password <password> --shell /bin/bash <user>

我在 /etc/ssh/sshd_config 文件中添加了一行,以禁止 FTP 用户使用 SSH,如下所示,然后重新启动 sshd 服务

DenyUsers <user>

我已更新 FTP 文件夹的权限,如下所示:

sudo chown <user>:<user> /ftp/<user>/in/<folder-name>
sudo chmod 750 /ftp/<user>/in/<folder-name>

当我尝试使用 FTP 用户连接到 FTP 时,出现“530 登录不正确”的情况。

Status: Disconnected from server
Status: Connecting to <ip>:21...
Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
Status: TLS connection established.
Command:    USER affinity
Response:   331 Please specify the password.
Command:    PASS ****************
Response:   530 Login incorrect.
Error:  Critical error: Could not connect to server

以及 /var/log/vsftpd.log 文件:

Mon Jun  6 19:10:51 2022 [pid 8417] CONNECT: Client "::ffff:172.24.8.13"
Mon Jun  6 19:10:52 2022 [pid 8409] [<user>] FAIL LOGIN: Client "::ffff:172.24.8.13"
Mon Jun  6 19:10:54 2022 [pid 8417] DEBUG: Client "::ffff:172.24.8.13", "Control connection terminated without SSL shutdown."

非常有趣且绝对值得一提的是,我在 Debian 10 Linux 服务器上执行了与上面列出的完全相同的过程,运行正常。但是,我在两台不同的 Ubuntu 服务器上复制了此过程,都出现了相同的错误。

调试

我尝试更新 vsftpd.conf 以设置“ssl_enable=NO”并注释掉下面的相关配置行,然后重新启动 vsftpd,但没有成功。

我尝试在启用和禁用 ufw 防火墙的情况下连接 FTP 用户,但两次都出现相同的 530 错误。

我已经检查过 FTP 用户不在 /etc/ftpusers 中。

我已检查 FTP 用户是否在 /etc/passwd 中

图像:/etc/passwd 文件内容显示 FTP 用户使用 /bin/bash shell

我尝试更新 vsftpd.conf 文件,将以下行从 vsftpd 更改为 ftp,如下所示这个帖子,但没有成功。我已经将其恢复为 vsftpd。

pam_service_name=ftp

我已经检查 FTP 用户的登录 shell(/bin/bash)是否在 /etc/shells 中。

我尝试过逐行注释掉每一行,以及 PAM 文件 (/etc/pam.d/vsftpd) 中的所有行,并彻底删除 PAM 文件,每次都重新启动 vsftpd,但都无济于事。以下是 PAM 文件当前包含的内容:

# Standard behaviour for ftpd(8).
auth    required        pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.

# Standard pam includes
@include common-account
@include common-session
@include common-auth
auth    required        pam_shells.so

我还尝试用已接受答案给出的建议替换 PAM 文件本文,但没有成功。我已经将 PAM 文件恢复为上述配置。

根据同一篇文章,我尝试将“seccomp_sandbox=NO”添加到 vsftpd.conf,但没有成功。

我已经尝试从 /etc/ssh/sshd_config 中删除 deniedUsers 行以防万一,但并没有什么效果。

作为最后的手段,我卸载并重新安装了 vsftpd,如下所示本文,但这没有帮助。

sudo apt-get remove vsftpd
sudo rm /etc/pam.d/vsftpd
sudo apt-get install vsftpd

每次尝试更改配置后,我都会重新启动服务以确保更改生效!

这是我浏览过的一些帖子的列表,但这绝不是详尽的列表(我已经浏览了几天了)

我已经尽可能多地问问题,回答问题,现在我已经没有主意了。如果有人能帮助我,我将不胜感激!

答案1

正如@steeldriver 指出的那样,我需要设置密码的加密版本,而不是以自由文本形式设置。

换句话说,我需要做的就是运行sudo passwd <user>,然后在提示时将密码粘贴到 shell 中。

答案2

对我来说,解决方案是 /etc/pam.d/vsftpd 中的某些文件包含对指纹的要求...因此这无法工作,因为我的 ftp 用户无法输入或注册指纹

相关内容