You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins共享库通过SSH拉取GitHub代码认证失败求助

Jenkins共享库拉取GitHub代码凭证类型不匹配问题解决方案

核心原因

你配置的凭证是SSH Username with private key类型,但Jenkins当前拉取共享库的配置(大概率是HTTPS方式拉取)要求使用org.jenkinsci.plugins.plaincredentials.StringCredentials(即GitHub个人访问令牌PAT这类文本凭证),两者类型不匹配导致报错。


具体解决步骤

方案一:切换为HTTPS拉取并配置对应凭证

  • 生成GitHub个人访问令牌(PAT):
    登录GitHub账号,进入Settings > Developer settings > Personal access tokens,创建新令牌并勾选repo权限,保存生成的令牌内容。
  • 在Jenkins添加String类型凭证:
    1. 进入Jenkins后台的Manage Jenkins > Manage Credentials
    2. 选择目标凭证域,点击Add Credentials
    3. 类型选择Secret text,将生成的PAT填入Secret字段,设置凭证ID和描述后保存
  • 修改共享库配置:
    将共享库的仓库URL改为HTTPS格式(如https://github.com/你的用户名/你的共享库.git),并选择刚创建的String类型凭证。

方案二:坚持SSH拉取时修正配置

如果要继续用SSH方式拉取代码:

  • 确认Jenkins共享库的拉取方式配置为SSH,而非HTTPS
  • 验证SSH凭证有效性:在Jenkins服务器上执行ssh -i /私钥文件路径 git@github.com,确认能成功连接GitHub
  • 检查Jenkins是否配置了SSH代理(若需要),确保服务器可通过私钥正常访问仓库

方案三:排查Jenkinsfile代码问题

如果是在Jenkinsfile中手动指定凭证,检查是否错误将SSH凭证用于HTTPS拉取场景,比如:

// 错误示例:用SSH凭证适配HTTPS拉取
library identifier: 'shared-lib@main', retriever: modernSCM(
  [$class: 'GitSCMSource',
   remote: 'https://github.com/你的用户名/你的共享库.git',
   credentialsId: 'SSH_jenkins_with_Github']
)

将credentialsId替换为对应类型的凭证ID即可。


内容的提问来源于stack exchange,提问作者Nauti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:47:05