sergey_mo的答案的另一种方法是在jenkins服务器上创建多个ssh密钥。
(虽然作为sergey_mo回答的第一个评论者说,这可能最终比管理一个密钥对更痛苦。)
让这对我有用的一件事就是确保这一点 github.com 在... ~jenkins/.ssh/known_hosts 。
github.com
~jenkins/.ssh/known_hosts
如果您需要Jenkins访问超过1个项目,您需要: 1.将公钥添加到一个github用户帐户 2.将此用户添加为所有者(以访问所有项目)或作为每个项目中的协作者。
一个系统用户的许多公钥将无法工作,因为GitHub将找到第一个匹配的部署密钥,并将发回错误,如 的 “错误:用户/ repo2的权限被拒绝给用户/ repo1” 强>
http://help.github.com/ssh-issues/
我和gitlab有类似的问题。事实证明我限制了允许通过ssh登录的用户。这不会影响github用户,但如果人们最终在这里遇到gitlab(等)问题,请确保添加 git 到了 AllowUsers 设置 /etc/ssh/sshd_config :
git
AllowUsers
/etc/ssh/sshd_config
# Authentication: LoginGraceTime 120 PermitRootLogin no StrictModes yes AllowUsers batman git
也许是GitHub的支持 部署密钥 你正在寻找什么?引用该页面:
的 我什么时候应该使用部署密钥? 强> 很简单,当您的服务器需要拉取访问单个私人仓库时。此密钥直接附加到存储库而不是个人用户帐户。
的 我什么时候应该使用部署密钥? 强>
很简单,当您的服务器需要拉取访问单个私人仓库时。此密钥直接附加到存储库而不是个人用户帐户。
如果这是您正在尝试的并且它不起作用,您可能希望更新您的问题,包括所使用的URL的更多详细信息,密钥文件的名称和位置等。
现在的技术部分:如何使用Jenkins的SSH密钥?
如果你有,比如说 jenkins unix用户,您可以存储部署密钥 ~/.ssh/id_rsa 。当Jenkins尝试通过ssh克隆repo时,它会尝试使用该密钥。
jenkins
~/.ssh/id_rsa
在某些设置中,您无法将Jenkins作为自己的用户帐户运行,也可能无法使用默认的ssh密钥位置 ~/.ssh/id_rsa 。在这种情况下,您可以在其他位置创建密钥,例如 ~/.ssh/deploy_key ,并配置 ssh 将其与条目一起使用 ~/.ssh/config :
~/.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上部署-的myproject 。您的克隆URL现在变为
git@github.com
git clone github-deploy-myproject:myuser/myproject
这也是你所说的 存储库URL 进入詹金斯。
(请注意,你必须 不 放 SSH:// 在前面,为了这个工作。)
Jenkins在系统上创建了一个用户Jenkins。必须为Jenkins用户生成ssh密钥。 以下是步骤:
sudo su jenkins -s /bin/bash cd ~ mkdir .ssh // may already exist cd .ssh ssh-keygen
现在,您可以使用SSH密钥创建Jenkins凭据 在詹金斯仪表板上 添加凭据
选择此选项
私钥:来自Jenkins大师〜/ .ssh