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



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

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文件不能被其他人读取,如果它只是在那里几秒钟。

最新更新