我正在尝试从命令行自动创建密码。我已经尝试了以下方法,但它仍然不断要求输入密码。
echo "test101" | htpasswd -c ~/temp/password admin
如何在不输入密码的情况下从命令行生成自动htpasswd
?
为什么不直接使用:
htpasswd -b -c ~/temp/password admin test101
没有安装htpasswd
(例如在使用nginx时),则可以使用openssl生成密码。
printf "USER:$(openssl passwd -crypt PASSWORD)n" >> .htpasswd
-b
开关应该可以解决问题,但密码仍然可以通过进程列表(ps
等)对系统上的其他用户可见:
htpasswd -b -c ~/temp/password admin test101
从htpasswd的手册页中,我们得到这个:
-我在未经验证的情况下从 stdin 读取密码(用于脚本使用)。
因此,只需根据您的问题,这样的事情应该可以工作:
echo "test101" | htpasswd -c -i ~/temp/password admin
但是密码将在历史记录和进程列表中可见。
为了从命令行自动创建密码,我会将纯密码写入文件并执行以下操作:
htpasswd -c -i ~/temp/password admin < ~/temp/pass_plain
然后删除pass_plain文件。
还要确保pass_plain文件不能被其他人读取,如果它只是在那里几秒钟。