Jenkins控制器可连Git但代理节点失败(Permission denied (publickey))
执行用户身份不匹配
报错显示以ubuntu用户身份连接GitHub,但Jenkins在代理节点执行任务时,通常使用专属的jenkins用户(或自定义的代理执行用户)。你配置的SSH密钥可能是放在ubuntu用户的~/.ssh目录下,而非Jenkins执行用户的目录,导致Git无法读取正确的密钥。需确认代理节点上Jenkins进程的运行用户,将密钥移至该用户的~/.ssh目录,并设置密钥文件权限为600(chmod 600 ~/.ssh/id_rsa)。SSH密钥未加载到ssh-agent
即使密钥路径正确,若未加载到ssh-agent中,Git连接时无法自动调用密钥。可在代理节点切换至Jenkins执行用户,执行ssh-add ~/.ssh/你的密钥文件名加载密钥;同时在Jenkins任务中添加ssh-agent步骤,绑定对应的凭据,确保任务执行时能访问到密钥。Git配置未对执行用户生效
你配置的Git用户名和邮箱可能仅对ubuntu用户生效,而非Jenkins执行用户。切换至Jenkins执行用户,执行以下命令配置全局Git信息:git config --global user.name "你的用户名" git config --global user.email "你的邮箱"GitHub端权限配置错误
检查添加至GitHub的公钥是否为代理节点Jenkins执行用户的公钥,避免复制不全或错误。若为组织仓库,需确认该密钥对应的用户/部署密钥拥有仓库的读取权限;部署密钥需确保已正确关联目标仓库。SSH配置存在冲突
代理节点的~/.ssh/config可能存在错误配置,比如将GitHub的User设为ubuntu(正确应为git),导致连接身份错误。可修改配置文件:Host github.com HostName github.com User git IdentityFile ~/.ssh/你的密钥文件
内容的提问来源于stack exchange,提问作者vimal Dharmalingam

