我正在尝试从命令行自动创建密码。 我已经尝试过以下但它仍然要求输入密码。
echo "test101" | htpasswd -c ~/temp/password admin
如何在不输入密码的情况下从命令行生成自动htpasswd
?
答案 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文件不能被其他任何人读取,即使它只是存在几秒钟。