在 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 的问题的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins 安装 on centos7

[ci]jenkins-slave-ssh docker容器化

如何在 CentOS / RHEL 上设置 SSH 免密码登录

Jenkins构建项目连接Repository URL的填坑之路

Plesk:为jenkins用户生成SSH密钥

centos(linux)部署jenkins