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

Tam*_*mpa 15 bash .htpasswd

我试图从命令行自动创建密码.我已经尝试过以下但仍然一直要求输入密码.

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)

  • 虽然它很旧:因为同一系统上的所有其他用户可能会在 /proc/<uid>/cmdline 中看到“test101”一小段时间,如果他们正在观看。 (6认同)
  • 如果您的系统有超过 1 个用户,则这种情况,对于创建初始示例来设置服务器并生成 htpasswd,这不会有问题。 (2认同)

小智 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 文件不能被其他任何人读取,即使它只存在几秒钟。


Dan*_*ger 9

-b开关应该做的伎俩,但密码仍然会通过进程列表系统上的其他用户(可见光ps等):

htpasswd -b -c ~/temp/password admin test101
Run Code Online (Sandbox Code Playgroud)


eli*_*lim 9

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

printf "USER:$(openssl passwd -crypt PASSWORD)\n" >> .htpasswd
Run Code Online (Sandbox Code Playgroud)

  • 今天`-crypt`被认为是不安全的。您可以使用“-apr1”代替。 (2认同)