Chef-server 12.1.0备份恢复后登录出现401权限错误求助
我之前也碰到过类似的Chef Manage迁移后登录401的问题,大概率是密钥不一致或者Chef Manage的会话密钥/加密配置没同步到位,咱们一步步排查解决:
1. 优先检查密钥文件一致性
Chef Server和Chef Manage的加密、会话验证完全依赖两个核心密钥文件,这也是迁移后401最常见的诱因:
- 对比新旧服务器上的
/etc/opscode/private-chef-secrets.json,确保和备份的完全一致 - 对比
/var/opt/opscode/manage/etc/manage-secrets.json,同样要和备份文件分毫不差
用diff命令快速校验:
diff /etc/opscode/private-chef-secrets.json /path/to/your/backup/private-chef-secrets.json diff /var/opt/opscode/manage/etc/manage-secrets.json /path/to/your/backup/manage-secrets.json
如果发现差异,直接用备份文件覆盖新服务器的对应文件,然后重新配置并重启服务:
chef-server-ctl reconfigure opscode-manage-ctl reconfigure opscode-manage-ctl restart
2. 验证数据库用户凭证映射
虽然你说用户和组织信息存在,但有可能数据库恢复时密码哈希没正确同步。进入PostgreSQL检查:
chef-server-ctl psql -d opscode_chef
执行查询语句确认密码哈希:
SELECT username, hashed_password FROM users;
如果哈希值和备份库不一致,重新导入PostgreSQL转储文件:
chef-server-ctl stop postgresql rm -rf /var/opt/opscode/postgresql/data/* chef-server-ctl start postgresql psql -U opscode_chef -d opscode_chef -f /path/to/your/postgres_dump.sql chef-server-ctl reconfigure
3. 排查Chef Manage服务状态与日志
401错误也可能是Manage服务没正确连接到Chef Server的认证组件:
- 先检查所有Manage服务是否正常运行:
opscode-manage-ctl status
确保nginx、unicorn、sidekiq这些核心服务都是up状态。
- 查看认证日志找具体错误:
tail -f /var/log/opscode/manage/web/auth.log
如果看到invalid signature或者secret mismatch这类日志,直接回到第一步重新同步密钥文件即可。
4. 用命令行重置密码(比UI更可靠)
如果UI重置密码没反应,大概率是邮件服务未配置,直接用命令行重置更稳妥:
chef-server-ctl user-password YOUR_USERNAME
输入新密码后,重启Manage服务:
opscode-manage-ctl restart
此时再尝试登录,应该就能正常进入了。
5. 清理缓存收尾
最后清理一下服务缓存,避免旧会话残留导致的异常:
chef-server-ctl clear-cache opscode-manage-ctl clear-cache chef-server-ctl restart opscode-manage-ctl restart
内容的提问来源于stack exchange,提问作者Paulus2
相关产品推荐
相关产品推荐

