apache .htaccess密码保护需先启用allowoverride authconfig,再配置authtype basic、authname、绝对路径authuserfile及require指令;密码文件用htpasswd生成并置于web不可访问路径,且必须配合https使用。

Apache 的 .htaccess 密码保护目录,核心是启用 Basic 认证并确保密码文件不被 Web 直接访问。它适合无服务器主配置权限的场景,但必须搭配 HTTPS 使用,否则密码以明文传输。
确认 AllowOverride 已启用认证指令
Apache 默认禁用 .htaccess 中的认证功能。需在主配置中明确允许:
- 找到对应目录的
<directory></directory>块(如/var/www/html/private) - 将
AllowOverride None改为AllowOverride AuthConfig - 保存后重启服务:
sudo systemctl restart apache2(Debian/Ubuntu)或sudo systemctl restart httpd(RHEL/CentOS)
编写 .htaccess 文件
在要保护的目录中新建 .htaccess,内容简洁明确:
使用tbot机器ID身份文件配合tsh CLI,通过Teleport访问控制SSH登录托管主机或执行远程命令。
AuthName "请输入管理员凭据" AuthType Basic AuthUserFile /etc/apache2/auth/private.htpasswd Require valid-user
-
AuthName是弹窗提示文字,不含敏感信息即可 -
AuthUserFile必须写绝对路径,且该路径不能通过浏览器直接访问(推荐放在/etc/apache2/auth/或 Web 根目录外) -
Require valid-user表示所有密码文件中的用户都可登录;如只允特定用户,改用Require user alice bob
生成和管理 .htpasswd 密码文件
使用 htpasswd 工具操作,避免手写错误:
- 首次创建:
htpasswd -c /etc/apache2/auth/private.htpasswd admin(-c表示新建) - 追加用户:
htpasswd /etc/apache2/auth/private.htpasswd devuser(去掉-c) - 更新密码:再次运行同上命令,输入新密码即可
- 删除用户:
htpasswd -D /etc/apache2/auth/private.htpasswd olduser
生成的密码默认采用 APR1(MD5 变种),安全强度足够日常使用。
额外加固建议
防止配置本身泄露或误用:
- 在
.htaccess开头添加以下规则,禁止他人直接访问该文件:<files><br> Require all denied<br></files>
- 禁用目录浏览:
Options -Indexes,避免文件列表暴露 - 确保站点已部署 HTTPS —— Basic 认证不加密传输,HTTP 下等同于裸奔










