PUPPET问题:Linux域机器用域用户执行puppet agent -t时证书报错
解决Linux域用户执行
puppet agent -t的证书错误问题 我之前在AD域环境部署Puppet代理时刚好碰到过一模一样的问题,核心原因是域用户没有足够权限访问Puppet代理的核心目录,而且默认会用当前用户身份生成不匹配的证书请求。咱们一步步来解决:
1. 修复Puppet目录的权限问题
Puppet代理的配置、证书、日志目录默认归root独占,域用户没有读写权限,这是报错的首要原因。先检查目录权限:
ls -ld /etc/puppetlabs/puppet /var/lib/puppet /var/log/puppet
执行以下命令调整权限,把域用户加入Puppet用户组:
# 先创建puppet组(如果系统里还没有) groupadd puppet # 将域用户xiru添加到puppet组 usermod -aG puppet xiru # 把核心目录的组权限改为读写 chown -R root:puppet /etc/puppetlabs/puppet /var/lib/puppet /var/log/puppet chmod -R g+rw /etc/puppetlabs/puppet /var/lib/puppet /var/log/puppet
2. 强制Puppet使用统一的节点名称
root执行时用的是机器在AD域中的主机名作为证书名称,但域用户执行时可能会默认用xiru@域名这类身份生成证书,导致服务器端识别不了。
编辑Puppet代理配置文件/etc/puppetlabs/puppet/puppet.conf,在[agent]段添加或确认以下配置:
certname = your-hostname.your-domain.com # 替换成机器在AD域的完整主机名 server = your-puppet-server-fqdn # 替换成你的Puppet服务器完整域名
修改后重启Puppet代理服务:
systemctl restart puppet
3. 清理已生成的错误证书请求
域用户之前已经生成了无效的证书请求,需要在代理端和服务器端都清理掉:
代理端清理(用root身份执行):
rm -rf /var/lib/puppet/ssl/certs/xiru* /var/lib/puppet/ssl/certificate_requests/xiru*
服务器端清理:
登录Puppet服务器,执行:
puppet cert clean xiru@your-domain.com # 替换成之前生成的错误证书名称
4. 重新执行Puppet代理命令
现在切换到域用户xiru,重新执行:
puppet agent -t
此时代理会用正确的主机名向服务器发起证书请求,你可以在Puppet服务器上执行puppet cert list看到请求,然后签署:
puppet cert sign your-hostname.your-domain.com
额外提示
- 如果域用户有sudo权限,临时可以用
sudo puppet agent -t执行,但上面的权限配置才是长期解决方案。 - 检查域用户的环境变量,确保没有
PUPPET_CERTNAME这类变量覆盖默认配置。
内容的提问来源于stack exchange,提问作者Elias
相关产品推荐
相关产品推荐

