Answers:
也许GitHub 对您正在寻找的部署密钥提供支持?引用该页面:
什么时候应该使用部署密钥?
很简单,当您的服务器需要对单个私有存储库的访问权限。该密钥直接附加到存储库,而不是个人用户帐户。
如果这是您已经尝试过的方法,但是它不起作用,则可能需要使用所用URL,密钥文件的名称和位置等更多详细信息来更新您的问题。
现在是技术部分:如何在Jenkins中使用SSH密钥?
例如,如果您有一个jenkins
Unix用户,则可以将您的部署密钥存储在中~/.ssh/id_rsa
。当詹金斯尝试通过ssh克隆存储库时,它将尝试使用该密钥。
在某些设置中,您无法将Jenkins作为自己的用户帐户运行,也可能无法使用默认的ssh密钥位置~/.ssh/id_rsa
。在这种情况下,您可以在其他位置创建密钥,例如~/.ssh/deploy_key
,并配置ssh
为与以下项中的项一起使用~/.ssh/config
:
Host github-deploy-myproject
HostName github.com
User git
IdentityFile ~/.ssh/deploy_key
IdentitiesOnly yes
因为您使用的所有身份验证均已通过所有Github存储库进行验证,git@github.com
并且您不希望上述密钥用于与Github的所有连接,所以我们创建了一个主机别名github-deploy-myproject。您的克隆URL现在变为
git clone github-deploy-myproject:myuser/myproject
这也是您将存储库URL放入Jenkins的内容。
(请注意,请勿将ssh://放在前面,以使其正常工作。)
ssh-keygen
在用户Jenkins运行时(在我的Ubuntu服务器上为“ jenkins”)运行。然后~jenkins/.ssh/id_rsa.pub
,我将其添加到github上存储库的部署密钥部分。
~
目录。但是/var/lib/jenkins/.ssh/
,对于默认的詹金斯用户来说,这些键就可以使用!
/var/lib/jenkins
是用户的主目录(~
)jenkins
。
Could not match github-deploy-myproject:myuser/myproject
在挂钩日志中看到类似的错误。我已经输入了它作为我的Repo URL,并且构建工作正常,因此可以访问GitHub。只是来自GitHub的帖子无法触发构建。
对我来说起作用的一件事是确保它github.com
在其中~jenkins/.ssh/known_hosts
。
如果您需要詹金斯访问1个以上的项目,则需要:
1.将一个公钥添加到一个github用户帐户中
。2.将该用户添加为所有者(以访问所有项目)或在每个项目中作为协作者。
一个系统用户的许多公共密钥将无法使用,因为GitHub将找到第一个匹配的部署密钥,并会发回错误,例如“错误:用户/ repo2的权限被拒绝给用户/ repo1”
另一个选择是使用GitHub个人访问令牌:
https://github.com/my-username/my-project.git
)github-token-for-my-username
我在詹金斯ver。上进行了测试。2.222.1和带有私有GitHub存储库的Jenkins GitHub插件1.29.5。
sergey_mo的答案的另一种选择是在jenkins服务器上创建多个ssh密钥。
(尽管正如sergey_mo回答的第一位评论者所说,这可能最终比管理单个密钥对更加痛苦。)