如何在不输入密码的情况下从命令行自动生成htpasswd?

时间:2012-04-15 17:09:08

标签: bash .htpasswd

我正在尝试从命令行自动创建密码。 我已经尝试过以下但它仍然要求输入密码。

echo "test101" | htpasswd -c ~/temp/password admin

如何在不输入密码的情况下从命令行生成自动htpasswd

4 个答案:

答案 0 :(得分:29)

为什么不使用:

htpasswd -b -c ~/temp/password admin test101

答案 1 :(得分:9)

-b开关应该可以解决问题,但系统上的其他用户仍可通过进程列表(ps等)看到密码:

htpasswd -b -c ~/temp/password admin test101

答案 2 :(得分:4)

如果未安装htpasswd(例如,使用nginx时),则可以使用openssl生成密码。

printf "USER:$(openssl passwd -crypt PASSWORD)\n" >> .htpasswd

答案 3 :(得分:1)

从htpasswd的手册页中我们可以得到以下信息:

  

-i从stdin读取密码而不进行验证(用于脚本)。

因此,根据您的问题,应该可以执行以下操作:

echo "test101" | htpasswd -c -i ~/temp/password admin

但是密码将在历史记录和进程列表中可见。

要从命令行自动创建密码,我会将普通密码写入文件并执行以下操作:

htpasswd -c -i ~/temp/password admin < ~/temp/pass_plain

然后删除pass_plain文件。

还要确保pass_plain文件不能被其他任何人读取,即使它只是存在几秒钟。