0%

Jenkins 添加 github 时碰到的一些奇怪的问题

问题

安装 Jenkins 之后我要用 Jenkins 拉取 github 仓库,但是我碰到了个奇怪问题

就是以 git@github.com:mtrucc/ice-electron.git 这种格式拉取仓库,不选择凭据,或者凭据选择用户名密码,总是返回

1
2
3
4
5
6
7
无法连接仓库:Command "git ls-remote -h -- git@github.com:mtrucc/ice-electron.git HEAD" returned status code 128:
stdout:
stderr: git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

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

过程

在此之前我自己已经添加过 ssh-keygen 到 github ssh 配置中了。

网上的解决方法也有不少,但都没用

比如执行 sudo su jenkins 切换到 jenkins 用户拉一遍仓库。

或者在 /home/jenkins 文件夹生成密钥后提权 chown jenkins:jenkins id_rsa id_rsa.pub

后来我又试验了一下将链接换成 https://github.com/mtrucc/ice-electron.git 就不存在上面的问题了。

我对比了一下命令行执行

1
2
git ls-remote -h -- git@github.com:mtrucc/ice-electron.git HEAD
git ls-remote -h -- https://github.com/mtrucc/ice-electron.git HEAD

这两个命令的返回结果其实是一致的,但是jenkins

但这样解决的话,我实在是非常别扭,找不到原因。

解决方式

后来我又执行 cat ~/.ssh/id_rsa 将私钥提取出来,然后在Jenkins中添加了 SSH Username with private key 类型的凭据,username填的root,key是将刚刚提取出来的key粘贴上去,就可以用 git@github.com:mtrucc/ice-electron.git 了。

或者 Repository URL 填写为 https 类型的也可以。