vsftpd 不接受使用 MD5 加密的密码

vsftpd 不接受使用 MD5 加密的密码

我正在使用 vsftpd 设置服务器,让虚拟用户访问他们的空间。现在它完全正常工作,但只能使用 CRYPT 密码。所以

sudo htpasswd -c /etc/vsftpd/ftpd.passwd phpmyadmin

不允许我登录,但是

sudo htpasswd -c -d /etc/vsftpd/ftpd.passwd phpmyadmin

将要。

/etc/vsftpd.conf

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
nopriv_user=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/var/www/vhosts/$USER.universe.local
chroot_local_user=YES
hide_ids=YES
guest_username=vsftpd

/etc/pam.d/vsftpd

auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd crypt=2
account required pam_permit.so crypt=2

我从源代码安装了 apache2.4.3 以及 PHP。

我尝试过的事情:

  • 经常使用 Google
  • 设置 crypt=2
  • 问朋友们
  • 使用 SHA(也不起作用)
  • 更新 hpasswd 和 vsftpd

我已经为此苦苦挣扎了一个星期,我希望你们能进一步帮助我

答案1

htpasswd生成 Apache 格式的 MD5 哈希,您可以通过查看它们是否以 开头来验证$apr1$,但 PAM 仅支持您的平台实现的格式crypt(3)。对于 Glibc,等效的(基于 MD5)将是$1$。您只需要使用不同的工具生成密码。以下是一个例子:

sh$ openssl passwd -1
Password: 
Verifying - Password: 
$1$vhzHvIYn$2Ro.R0WdLnxrWjHcs5RbA/

您可以将此哈希复制到您的ftpd.passwd文件中username:hash,格式如下,它就可以工作了。

答案2

扩展@bonsaiviking 的答案,您可以生成 openssl md5 密码,并使用 htpasswd 的批处理模式 -b 和纯文本 -p 选项将其添加到 ftpd.passwd 文件中,如下所示:

htpasswd -c -p -b ftpd.passwd *username* $(openssl passwd -1 -noverify *password*)

上面的示例(Ubuntu)还使用 -c 创建一个新的 ftpd.passwd 文件(如果该文件不存在)

答案3

您显示的两个命令是等效的,因为-d选项告诉密码使用大多数操作系统的默认加密。

如果你想要使用 md5 哈希密码,那么你应该使用-m

sudo htpasswd -m /etc/vsftpd/vsftpd.passwd test
New password:
Re-type new password:
Adding password for user test
grep test /etc/vsftpd/vsftpd.passwd
test:$apr1$GTYtpKS1$Jyfgu42kDspxdJTPPzSOY.

这表明测试的密码已经使用md5加密。

相关内容