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

Jenkins SSH代理执行git fetch遇Bitbucket公钥权限拒绝问题排查

Jenkins流水线执行git fetch遇"git@bitbucket.org: Permission denied (publickey)"的排查原因
  • 环境变量与shell加载差异:手动登录ubuntu用户时,shell会加载~/.bashrc或~/.profile的配置,但Jenkins通过SSH代理执行命令时,属于非交互式非登录shell,不会自动加载这些配置,可能导致SSH_AUTH_SOCK等关键环境变量缺失,ssh-agent无法正常调用已添加的密钥。可以在流水线中添加命令对比:

    # Jenkins会话中检查
    echo $SSH_AUTH_SOCK
    ssh-add -l
    # 手动登录时执行相同命令,对比输出
    
  • SSH密钥及目录权限问题:手动操作时权限正常,但Jenkins执行时可能因上下文差异触发权限校验严格性问题。确保:

    • .ssh目录权限为700
    • 密钥文件(如id_rsa)权限为600
      可在流水线中添加命令检查:
    ls -la ~/.ssh/
    
  • Jenkins代理用户不匹配:确认Jenkins配置的SSH代理凭据对应的用户,和你手动登录的ubuntu用户完全一致。若Jenkins执行时切换了用户(比如通过sudo),会使用不同的家目录和密钥文件,导致权限验证失败。

  • ssh-agent未在Jenkins会话中初始化:手动登录时通常会自动启动ssh-agent并添加密钥,但Jenkins的SSH会话默认不会启动该服务。可在流水线脚本开头添加初始化步骤:

    eval $(ssh-agent -s)
    ssh-add ~/.ssh/id_rsa  # 若密钥有密码,需通过Jenkins凭据管理注入密码
    
  • Bitbucket密钥关联混淆:确认添加到Bitbucket的公钥,与Jenkins代理用户家目录下的~/.ssh/id_rsa.pub完全匹配。若存在多用户或多密钥文件,可能出现手动操作时用了其他密钥,但Jenkins默认调用id_rsa导致验证失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:18:13