如何为Jenkins容器的GitHub App认证更新known_hosts文件
解决GitHub App认证下Git克隆权限拒绝及Known Hosts问题
修复GitHub主机密钥问题
错误提示的Failed to add the RSA host key for IP address '20.248.137.48',是因为该GitHub IP未包含在你挂载的known_hosts文件中。按以下步骤更新:
- 生成包含GitHub所有主机密钥的临时文件:
ssh-keyscan github.com >> known_hosts_temp - 更新Kubernetes Secret:用新的临时文件覆盖原有Secret的
known_hosts内容:
确保流水线容器挂载的是更新后的Secret卷。kubectl create secret generic jenkins-known-hosts --from-file=known_hosts=known_hosts_temp --dry-run=client -o yaml | kubectl apply -f -
验证GitHub App认证配置
git@github.com: Permission denied (publickey)说明当前使用的SSH密钥并非GitHub App生成的有效凭据,需确认以下几点:
- 确认CloudBees CI已正确配置GitHub App,且流水线使用的是GitHub App类型的凭据,而非普通SSH密钥或个人访问令牌。
- 检查Git SCM配置:克隆URL为SSH格式(
git@github.com:AusBOM/gridutility.git),且关联的凭据是GitHub App生成的专用SSH密钥。CloudBees会自动为GitHub App生成临时密钥用于克隆,无需手动配置固定密钥,但要确保选择了正确的GitHub App凭据。 - 确认GitHub App权限:App需拥有目标仓库的读取权限,且已安装到包含该仓库的组织/账号下。
排查容器内SSH环境
- 检查
/home/jenkins/.ssh/目录及文件权限:确保jenkins用户拥有读写权限,目录权限设为700,文件权限设为600。 - 添加流水线调试步骤,验证SSH连接:
运行该步骤可获取SSH连接的详细日志,定位具体问题。stage('Debug SSH') { steps { sh 'ls -la /home/jenkins/.ssh/' sh 'cat /home/jenkins/.ssh/known_hosts' sh 'ssh -T git@github.com' } }
内容的提问来源于stack exchange,提问作者user3559247
相关产品推荐
相关产品推荐

