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


10

我正在使用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

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

我尝试过的事情:

  • 谷歌很多
  • 设置crypt = 2
  • 问朋友们
  • 使用SHA(也不起作用)
  • 更新htpasswd和vsftpd

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


1
您正在使用哪个操作系统?在Linux上,默认默认值是crypt,与使用-d相同。
user9517 '11

为了完整起见,-m将生成基于MD5的apache样式哈希($apr1$salt$hash
bonsaiviking 2012年

Answers:


13

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格式复制到文件中,并且该散列应该起作用。


非常感谢您为我提供帮助!有效!我可以让pam支持apache的md5版本吗?
Marco

查看pam_pwdfile代码,您似乎必须在其中写入支持并重新编译。它甚至包含$1$MD5密码哈希的完整实现,一直到MD5原语,因此它不是完全crypt意识到的。
bonsaiviking 2012年

6

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

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

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


htpasswd输出:“警告:以纯文本形式存储密码可能在此平台上不起作用。” 我猜这是因为它认为这确实是一个计划文本,但实际上它是openssl生成的哈希。使用这种方法生成密码可与vsftp一起使用。
Svetoslav Marinov

正确,htpasswd可能会在通过MD5哈希作为纯文本字符串传递b / c时发出警告。
jnolan517 2015年

为此制作了脚本来执行此操作-在此处获取gist.github.com/bmatthewshea/53ed5148f09dfed50cebd10650ca551b
bshea

1

您显示的两个命令是等效的,因为该-d选项告诉htpasswd使用crypt,这是大多数操作系统的默认设置。

如果要用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加密。


他必须使用其他版本的htpasswd,因为使用和不使用都会得到不同的结果-d
bonsaiviking 2012年

如前所述,这不适用于vsftp-它会生成Apache风格的md5。每个以上^ serverfault.com/a/450220/92023
bshea '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.