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

无需Gitlab插件:Jenkins安全访问Gitlab私有仓库的配置方法

没问题,这两种方案我都帮你理清楚,都是不依赖GitLab插件就能搞定的,亲测好用:

方案一:使用GitLab个人访问令牌(PAT)替代用户名/密码

这种方式比明文用户名密码安全得多,而且配置起来很简单:

  • 生成GitLab PAT:登录你的GitLab账号,点击右上角头像 → Settings → Access Tokens。填写令牌名称、有效期,然后勾选权限(只读仓库选read_repository,需要提交代码的话再加write_repository),最后点击Create personal access token,生成后一定要复制保存好——刷新页面就看不到了。
  • 在Jenkins中配置凭据:进入Jenkins → Manage Jenkins → Manage Credentials,选择合适的凭据域(比如全局域),点击Add Credentials。类型选Username with password,用户名可以随便填(比如gitlab-token),密码填刚才生成的PAT,给凭据设置一个好记的ID和描述,方便后续流水线调用。
  • 修改流水线配置:如果是在Jenkins项目的Pipeline页面配置,直接把Git仓库的HTTPS URL填进去,然后在Credentials下拉框选刚才创建的PAT凭据就行。要是用Jenkinsfile定义流水线,写法如下:
pipeline {
    agent any
    stages {
        stage('Checkout Code') {
            steps {
                git url: 'https://gitlab.com/your-username/your-private-repo.git',
                    credentialsId: '你的PAT凭据ID',
                    branch: 'main'
            }
        }
    }
}

提示:GitLab验证PAT时会忽略用户名,所以随便填个标识性的名字就行。

方案二:使用SSH私钥实现安全访问

这种方式基于密钥对认证,比令牌更适合长期稳定的服务器访问:

  • 在Jenkins服务器生成SSH密钥对:登录Jenkins服务器,切换到运行Jenkins的用户(比如jenkins用户,不然会有权限问题),执行命令:
ssh-keygen -t ed25519 -C "jenkins@your-server-domain.com"

一路回车(不要设置密钥密码,否则后续需要额外配置ssh-agent插件,不符合你不用额外插件的需求),生成的私钥在~/.ssh/id_ed25519,公钥在~/.ssh/id_ed25519.pub。

  • 将公钥添加到GitLab仓库:打开你的GitLab私有仓库,进入Settings → Repository → Deploy keys,点击Add deploy key。粘贴公钥文件的内容,勾选Allow write access(如果需要往仓库提交代码的话),给密钥起个名字(比如Jenkins Server SSH Key),保存即可。
  • 在Jenkins中配置SSH凭据:进入Jenkins → Manage Jenkins → Manage Credentials,点击Add Credentials。类型选SSH Username with private key,用户名填git(GitLab的SSH访问默认用户名就是git),然后选择Enter directly,粘贴私钥文件(id_ed25519)的内容,设置凭据ID和描述。
  • 修改流水线配置:把Git仓库URL改成SSH格式(比如git@gitlab.com:your-username/your-private-repo.git),然后在Credentials下拉框选刚才创建的SSH凭据。Jenkinsfile写法示例:
pipeline {
    agent any
    stages {
        stage('Checkout Code') {
            steps {
                git url: 'git@gitlab.com:your-username/your-private-repo.git',
                    credentialsId: '你的SSH凭据ID',
                    branch: 'main'
            }
        }
    }
}

注意:要确保Jenkins服务器能访问GitLab的22端口(SSH默认端口),如果服务器有防火墙,记得开放对应端口;另外要给~/.ssh目录和密钥文件设置正确权限:chmod 700 ~/.ssh,chmod 600 ~/.ssh/id_ed25519,避免权限过高导致认证失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:49:07