jenkins配置私有仓库认证的核心是通过凭据管理安全存储并引用凭证。需按仓库类型选择对应凭证类型:git类(gitee/gitlab等)推荐ssh方式(填git用户名+私钥)或https方式(填账号+personal access token);制品库(harbor/artifactory)则用username with password或secret text类型,且不可混用于git拉取。

Jenkins 配置私有仓库认证,核心是把凭证(Credentials)存到 Jenkins 的凭据管理中,再在任务或流水线里引用。不同仓库类型(Gitee、GitLab、GitHub、Harbor、Artifactory 等)用的认证方式略有差异,但底层逻辑一致:选对凭证类型、填对内容、在对应位置正确引用。
配置 Git 类私有仓库(Gitee/GitLab/ GitHub)
主流用 HTTPS 或 SSH 两种方式,推荐 SSH 更安全稳定,尤其适合自动化场景。
-
SSH 方式:先在 Jenkins 服务器上生成或准备好私钥(
id_rsa),公钥(id_rsa.pub)添加到目标仓库的 SSH Keys 设置页;Jenkins 中添加凭据时选 SSH Username with private key,用户名填git,私钥粘贴或选择文件路径,ID 自定义(如gitee-ssh-key) -
HTTPS 方式:适用于 Gitee 或 GitLab 启用个人访问令牌(Personal Access Token)的场景;添加凭据时选 Username with password,用户名填 Gitee/GitLab 账号,密码栏填 Token(不是登录密码);ID 建议带平台名和用途,如
gitee-api-token - 在任务配置的“源码管理 → Git”中,URL 填对应地址(如
git@gitee.com:user/repo.git或https://gitee.com/user/repo.git),Credentials 下拉框选刚建好的 ID 即可
配置制品仓库(Harbor / Artifactory)
这类仓库不走 Git 协议,而是通过 HTTP API 或 Docker CLI 访问,认证通常用用户名密码、API Key 或 Token。
-
Harbor:添加凭据时选 Username with password,填 Harbor 登录账号和密码;若用 Docker 推送镜像,还需确保 Jenkins 所在节点的
/etc/docker/daemon.json已配置insecure-registries(如自签名证书)或已信任 CA -
Artifactory:优先使用 API Key(在 Artifactory 用户设置页生成)或 Access Token;Jenkins 中添加为 Secret text 类型,ID 如
artifactory-api-key;配合 JFrog 插件,在 Pipeline 或任务配置里指定该 ID - 注意:Harbor 和 Artifactory 的凭据不能直接用于 Git 拉代码,也不能混用 —— 它们只在构建后上传制品阶段生效
配置通用注意事项
很多问题其实出在细节没到位,而不是流程不对。
- 容器化 Jenkins(如 Docker 部署)时,SSH 私钥需挂载进容器,且 Jenkins 进程要能读取(权限设为
600,属主为jenkins用户) - 首次连接 SSH 仓库时,Jenkins 主机可能卡在
Are you sure you want to continue connecting?提示;需提前手动执行一次ssh -o StrictHostKeyChecking=no git@gitee.com接受指纹,或在 Jenkins 启动脚本中预置known_hosts - 凭据作用域建议选 Global(全局),避免每个任务重复配置;ID 名称尽量语义清晰,比如
prod-gitee-ssh、harbor-prod-cred - Gitee 的 API Token 凭据仅用于 Gitee 插件触发构建或状态回传,不能替代 Git 拉取代码的凭证 —— 这点常被混淆
Pipeline 中引用示例
写 Jenkinsfile 时,不用硬编码密码或密钥,全部通过 credentialsId 引用:
- Git 拉取:
git url: 'git@gitee.com:user/repo.git', credentialsId: 'gitee-ssh-key' - Harbor 推送:
sh 'docker login -u $USER -p $PASS harbor.example.com',其中$USER和$PASS来自withCredentials([usernamePassword(...)])步骤 - Artifactory 上传:
rtUpload( ... credentialsId: 'artifactory-api-key' )(需 JFrog 插件支持)











