有什么线索吗?也许你知道一些描述这种情况的文档/博客/任何东西?
现在进入技术部分:如何使用你的SSH密钥与Jenkins?
如果你有一个名为 jenkins
的Unix用户,你可以将你的部署密钥存储在 ~/.ssh/id_rsa
中。当Jenkins尝试通过ssh克隆仓库时,它将尝试使用该密钥。
在某些设置中,你无法将Jenkins作为自己的用户帐户运行,并且可能也不能使用默认的ssh密钥位置 ~/.ssh/id_rsa
。在这种情况下,你可以在不同的位置创建一个密钥,例如 ~/.ssh/deploy_key
,并在 ~/.ssh/config
中配置ssh
以使用该密钥:
Host github-deploy-myproject
HostName github.com
User git
IdentityFile ~/.ssh/deploy_key
IdentitiesOnly yes
因为您需要使用git@github.com
对所有Github存储库进行身份验证,而您不希望上述密钥用于与Github的所有连接,因此我们创建了一个主机别名github-deploy-myproject。现在您的克隆URL变成了:
git clone github-deploy-myproject:myuser/myproject
这也是你在 Jenkins 中输入的 仓库 URL。
(注意,为了使其正常工作,你不应该在前面加上 ssh://。)
ssh-keygen
命令。然后,我将~jenkins/.ssh/id_rsa.pub
添加到GitHub存储库的“deploy keys”部分。 - Adam Monsen~
目录之外,而是放置在/var/lib/jenkins/.ssh/
目录中,以便默认的Jenkins用户可以使用这些密钥! - garmoncheg/var/lib/jenkins
实际上是 jenkins
用户的主目录 (~
)。 - David Harkness我的一个解决方法是确保github.com
在~jenkins/.ssh/known_hosts
文件中。
如果你需要让Jenkins访问多个项目,你需要执行以下步骤:
1. 将公钥添加到一个GitHub用户账户中
2. 在每个项目中将该用户添加为Owner(可以访问所有项目)或Collaborator。
对于一个系统用户来说,添加多个公钥是行不通的,因为GitHub会找到第一个匹配的部署密钥,然后返回类似于"ERROR: Permission to user/repo2 denied to user/repo1"的错误信息。
Jenkins会在系统上创建一个用户 Jenkins。必须为Jenkins用户生成ssh密钥。以下是步骤:
sudo su jenkins -s /bin/bash
cd ~
mkdir .ssh // may already exist
cd .ssh
ssh-keygen
git
添加到/etc/ssh/sshd_config
的AllowUsers
设置中。# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
AllowUsers batman git
https://github.com/my-username/my-project.git
)github-token-for-my-username
的内容我在Jenkins ver. 2.222.1和Jenkins GitHub插件1.29.5上测试了这个方法,使用了私有GitHub存储库。
与sergey_mo的答案不同,另一种方法是在Jenkins服务器上创建多个SSH密钥。
(尽管作为sergey_mo答案的第一个评论者所说,这可能比管理单个密钥对更痛苦。)