GitLab CI/CD:script阶段SSH正常,after_script公钥权限被拒
GitLab多文件流水线after_script SSH权限拒绝问题的原因
1. 阶段环境隔离导致SSH配置失效
GitLab CI的after_script是独立于before_script和script的执行环境,两者不共享shell上下文。你在before_script中完成的SSH私钥配置(比如写入密钥文件、添加到ssh-agent、修改文件权限等操作),仅对当前before_script和后续script阶段有效。进入after_script阶段时,之前的环境配置被重置,自然无法通过SSH密钥认证,出现Permission denied (publickey)错误。
2. 作业状态判断逻辑导致标记成功
GitLab CI的作业成功与否,仅依据script阶段的命令退出码。哪怕after_script中的命令执行失败,只要script阶段的所有命令都正常完成(退出码为0),作业就会被标记为成功,after_script的错误不会影响最终状态。
3. 多文件流水线的额外可能因素
如果你的多文件流水线中,主作业与子作业的环境配置存在差异,或者before_script中依赖了临时存储的密钥文件(比如容器临时目录),after_script阶段可能无法访问这些资源,进一步加剧SSH认证失败的问题,但核心原因还是环境隔离。
内容的提问来源于stack exchange,提问作者Christian Giupponi
相关产品推荐
相关产品推荐

