解决 Azure DevOps Agent 的 SPNEGO 凭据错误问题
解决 Azure DevOps Agent 的 SPNEGO 凭据错误问题
Azure DevOps Agent 在运行 Release 时,经常会遇到 SPNEGO error: invalid credential
的问题,这通常是由于 Kerberos 票据 (TGT) 过期导致。krb5-kinit-sidecar
是一个用于自动更新 Kerberos 票据的容器化解决方案,但如果 keytab
文件未能及时刷新,仍然会导致认证失败。
问题分析
Kerberos 票据具有有限的生命周期,默认情况下可能为 8 小时或更短。Azure DevOps Agent 在长时间运行的任务中,可能会因为票据过期而无法访问受 Kerberos 保护的资源。krb5-kinit-sidecar
负责自动续订票据,但仍需确保 keytab
文件是最新的。
解决方案:自动更新 keytab
文件
为了确保 krb5-kinit-sidecar
始终使用最新的 keytab
文件,可以结合 cron
任务和 podman
命令,定期执行 kinit
刷新票据。
1. 配置 sudo
免密执行 podman
命令
在 /etc/sudoers
或 /etc/sudoer