我试图从命令行自动创建密码.我已经尝试过以下但仍然一直要求输入密码.
echo "test101" | htpasswd -c ~/temp/password admin
Run Code Online (Sandbox Code Playgroud)
如何在htpasswd不输入密码的情况下从命令行生成自动化?
Gav*_*ell 32
为什么不使用:
htpasswd -b -c ~/temp/password admin test101
Run Code Online (Sandbox Code Playgroud)
小智 11
从 htpasswd 的手册页中我们得到:
-i 从标准输入读取密码而不进行验证(用于脚本使用)。
所以根据你的问题,这样的事情应该有效:
echo "test101" | htpasswd -c -i ~/temp/password admin
Run Code Online (Sandbox Code Playgroud)
但密码将在历史记录和进程列表中可见。
要从命令行自动创建密码,我会将纯密码写入文件并执行类似的操作:
htpasswd -c -i ~/temp/password admin < ~/temp/pass_plain
Run Code Online (Sandbox Code Playgroud)
然后删除 pass_plain 文件。
还要确保 pass_plain 文件不能被其他任何人读取,即使它只存在几秒钟。
该-b开关应该做的伎俩,但密码仍然会通过进程列表系统上的其他用户(可见光ps等):
htpasswd -b -c ~/temp/password admin test101
Run Code Online (Sandbox Code Playgroud)
如果尚未htpasswd安装(例如,使用nginx时),则可以使用openssl生成密码。
printf "USER:$(openssl passwd -crypt PASSWORD)\n" >> .htpasswd
Run Code Online (Sandbox Code Playgroud)