在 centos 上设置 jenkins:ssh 密钥和 git 的问题
Posted
技术标签:
【中文标题】在 centos 上设置 jenkins:ssh 密钥和 git 的问题【英文标题】:Setting up jenkins on centos: problems with ssh keys and git 【发布时间】:2012-09-17 22:08:21 【问题描述】:经历了很多问题,但似乎没有任何问题可以解决我的问题。或者更准确地说,我不确定我是否正确地完成了整件事。 所以这里是:
已安装 centos 6.3 操作系统。 然后我按照以下指南安装 jenkins:
https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+RedHat+distributions
詹金斯工作正常。现在我正在尝试设置一个简单的构建作业,它需要克隆一个 git 存储库。 (我已经安装了 git 插件)
在存储库 URL 中,我键入以下内容: git@gitserver:myrepo.git 当然我得到一个错误:stderr:主机密钥验证失败。
好的,我需要生成 ssh 密钥,一切都会好的。 所以我做了以下事情:
su - jenkins
但不幸的是它不会切换到 jenkins 用户。
cat /etc/passwd
显示以下内容:
jenkins:x:496:492:Jenkins Continuous Build Server:/var/lib/jenkins:/bin/false
看来它没有通常的主目录。
问题是我如何为 jenkins 生成密钥,或者如果上述步骤不是正确的方法,我该如何解决?
非常感谢!
更新: 我生成了密钥(作为 root 用户)并将它们放在 jenkins 家中,并准确地完成并将公钥复制到 git 服务器。仍然没有帮助。
当我查看构建日志时,它说:
Started by user anonymous
Building in workspace /var/lib/jenkins/jobs/myrepo/workspace
这个匿名用户是 jenkins 创建的另一个用户,还是 jenkins 运行命令?
【问题讨论】:
我遇到了同样的问题 :(. 【参考方案1】:我做了什么:sudo -u jenkins ssh-keygen。到目前为止有效
【讨论】:
【参考方案2】:jenkins 是一个服务帐户,它没有设计外壳。人们普遍认为,服务帐户不应以交互方式登录。
我最初没有回答这个问题,因为它与已移至服务器故障的问题重复。我应该回答而不是在评论中链接到答案。
如果出于某种原因你想以 jenkins 身份登录,你可以这样做:sudo su -s /bin/bash jenkins
【讨论】:
【参考方案3】:为了以“jenkins”用户身份登录,也许你可以试试这个:
sudo -s -H -u jenkins
并尝试调用:
bash-4.1$ whoami
jenkins
希望对你有帮助。
【讨论】:
【参考方案4】:1) 首先通过编辑 /etc/passwd 文件使 jenkins 成为真实用户 改变
/bin/false 改为 /bin/bash
2) 登录 jenkins 用户,现在 Jenkins 主目录将是 /var/lib/jenkins
su - jenkins
3) 再次生成 ssh 密钥(密钥将在 /var/lib/jenkins/.ssh 中创建)
ssh-keygen -t rsa
4) 复制 id_rsa.pub 密钥并粘贴到你的 git 的 authorized_keys 文件中
5)如果它不起作用,可能你必须检查你的 .ssh 目录和内容的权限
chmod 700 ~/.ssh && chmod 600 ~/.ssh/*
【讨论】:
【参考方案5】:我在更改为 jenkins 用户时遇到问题。我需要在系统中正确创建用户,以便我可以登录。我运行了这个命令来帮助我在系统中创建 jenkins 用户:
su -s /bin/bash jenkins
【讨论】:
【参考方案6】:1 更改用户 jenkins 登录设置
vi /etc/passwd
将 /bin/false 更新为 /bin/bash
2 苏 - 詹金斯
jekins 用户主页将是 /var/lib/jenkins
3 ssh-keygen
cat .ssh/id_rsa.pub
将此密钥复制到 bitbucket
4 ssh git@bitbucket.org
这将在 .ssh/known_hosts 中设置 bitbucket ssh 密钥
现在你应该可以访问了
【讨论】:
【参考方案7】:如果您能够安装 Jenkins RPM,我假设您具有 root 访问权限。以 root 身份登录时,您是否向 jenkins 用户发起了诉讼?如果没有,您应该这样做或使用
sudo su - jenkins
如果您的登录用户具有 sudo 访问权限。
然后运行
ssh-keygen -t rsa
为 jenkins 用户生成 RSA 密钥对,您可以将公钥上传到您的 git 服务器。如果您采用默认值,密钥将生成为 /var/lib/jenkins/.ssh.id_ra.pub。
【讨论】:
问题是它没有切换到jenkins home。仍然留在我的用户家中。但是我仍然以root用户身份在jenkins home中生成了密钥,并且完全按照您所说的进行,但是错误仍然存在。 嗯,我上面的 sudo 命令格式错误 - 刚刚更正了。 密钥文件的所有者是 root 是否正确?可能 jenkins 用户没有登录 shell,这可能是原因。检查/etc/passwd
文件中是否有类似jenkins:x:999:1001::/var/lib/jenkins:/sbin/nologin
的条目,并暂时将/sbin/nologin
更改为/bin/bash
以切换到用户jenkins。【参考方案8】:
我认为 .ssh 目录应该位于 /var/lib/jenkins 中。
为我工作
【讨论】:
确实存在。但它是空的。我做了什么我在那个目录中生成了密钥。获取公钥并附加到 git 服务器上的 authorized_keys 文件中。还是不行……以上是关于在 centos 上设置 jenkins:ssh 密钥和 git 的问题的主要内容,如果未能解决你的问题,请参考以下文章
[ci]jenkins-slave-ssh docker容器化
如何在 CentOS / RHEL 上设置 SSH 免密码登录