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

迁移系统后DVC管道中Git SSH克隆权限被拒,如何配置凭证?

解决DVC流水线中Git SSH克隆权限问题

问题背景

我在流水线中使用DVC,迁移系统后Git克隆功能出现异常。已执行以下命令配置HTTPS凭证:

echo "https://bot_name:${PROJECT_ACCESS_TOKEN}@gitlab.ourproject.com/team/Data-Registry.git" >> ~/.git-credentials

但dvc.update()内部实际采用SSH克隆:

git clone git@gitlab.ourproject.com:team/Data-Registry.git

执行后触发权限错误:

git clone git@gitlab.ourproject.com:team/Data-Registry.git
Cloning into 'Data-Registry'...
git@gitlab.ourproject.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

手动执行HTTPS克隆命令可正常完成:

git clone https://bot_name:${PROJECT_ACCESS_TOKEN}@gitlab.ourproject.com/team/Data-Registry.git

流水线依赖dvc.update()自动执行,无法手动传递凭证,旧系统可正常运行,新部署环境无法工作,需配置让Git SSH克隆生效。

解决方法

方案1:配置SSH密钥认证

  • 生成无密码SSH密钥对
    在流水线运行环境中执行:

    ssh-keygen -t ed25519 -C "bot@ourproject.com" -f ~/.ssh/id_ed25519 -N ""
    

    参数说明:

    • -t ed25519:采用更安全的Ed25519加密算法
    • -f ~/.ssh/id_ed25519:指定密钥存储路径,避免覆盖已有密钥
    • -N "":设置空密码,适配流水线无交互场景
  • 添加公钥到GitLab机器人账号
    复制生成的公钥内容:

    cat ~/.ssh/id_ed25519.pub
    

    登录GitLab,找到bot_name账号的「SSH密钥」设置页面,粘贴公钥并保存。

  • 自动接受GitLab主机密钥
    避免首次连接时的交互确认,执行:

    mkdir -p ~/.ssh
    ssh-keyscan gitlab.ourproject.com >> ~/.ssh/known_hosts
    
  • 验证SSH连接
    执行以下命令确认配置有效:

    ssh git@gitlab.ourproject.com
    

    返回Welcome to GitLab, @bot_name!即为配置成功。

方案2:强制DVC使用HTTPS协议

如果不想配置SSH,可通过Git配置将SSH地址自动转为HTTPS,复用已有的凭证:

git config --global url."https://bot_name:${PROJECT_ACCESS_TOKEN}@gitlab.ourproject.com/".insteadOf "git@gitlab.ourproject.com:"

此配置会让所有指向git@gitlab.ourproject.com:的请求自动替换为HTTPS地址,无需修改DVC代码逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 06:22:43