在centos上设置jenkins:ssh密钥和git存在问题

在centos上设置jenkins:ssh密钥和git存在问题,git,ssh,jenkins,centos,ssh-keys,Git,Ssh,Jenkins,Centos,Ssh Keys,我问了很多问题,但似乎没有什么能解决我的问题。或者更准确地说,我不确定我是否把整个事情都做对了。 这就是: 已安装centos 6.3操作系统。 然后,我按照以下指南安装jenkins: 詹金斯工作得很好。现在我正在尝试设置一个简单的构建作业,它需要克隆一个git存储库。(我已经安装了git插件) 在存储库URL中,我键入以下内容: git@gitserver:myrepo.git 当然我会得到一个错误:stderr:主机密钥验证失败 好的,我需要生成ssh密钥,一切都会很好。 因此,我做了以

我问了很多问题,但似乎没有什么能解决我的问题。或者更准确地说,我不确定我是否把整个事情都做对了。 这就是:

已安装centos 6.3操作系统。 然后,我按照以下指南安装jenkins:

詹金斯工作得很好。现在我正在尝试设置一个简单的构建作业,它需要克隆一个git存储库。(我已经安装了git插件)

在存储库URL中,我键入以下内容: git@gitserver:myrepo.git 当然我会得到一个错误:stderr:主机密钥验证失败

好的,我需要生成ssh密钥,一切都会很好。 因此,我做了以下工作:

su - jenkins
jenkins:x:496:492:Jenkins Continuous Build Server:/var/lib/jenkins:/bin/false
但不幸的是,它没有切换到jenkins用户

cat/etc/passwd

显示以下内容:

su - jenkins
jenkins:x:496:492:Jenkins Continuous Build Server:/var/lib/jenkins:/bin/false
所以它似乎没有一个普通的主目录

问题是如何为jenkins生成密钥,或者如果上面的步骤不是正确的方法,如何修复

非常感谢

更新: 我生成了密钥(作为根用户)并将它们放在jenkins home中,然后准确地执行了操作,并将公钥复制到git服务器。还是没用

当我查看构建日志时,它会说:

Started by user anonymous
Building in workspace /var/lib/jenkins/jobs/myrepo/workspace

这个匿名用户是jenkins创建的另一个用户,还是运行命令的仍然是jenkins?

我认为.ssh目录应该位于/var/lib/jenkins中


适用于我

如果您能够安装Jenkins RPM,我假设您具有root访问权限。当以root用户身份登录时,您是否正在向jenkins用户发送电子邮件?如果没有,您应该这样做或使用

sudo su - jenkins
如果您登录的用户具有sudo访问权限

然后跑

ssh-keygen -t rsa

要为jenkins用户生成RSA密钥对,您可以将公钥上载到git服务器。如果采用默认设置,则密钥将生成为/var/lib/jenkins/.ssh.id\u ra.pub。

1更改用户jenkins登录设置

vi/etc/passwd

将/bin/false更新为/bin/bash

2苏-詹金斯

jekins用户主页应该是/var/lib/jenkins

3 ssh密钥生成

目录ssh/id\u rsa.pub

将此密钥复制到bitbucket

4 sshgit@bitbucket.org

这将在.ssh/known\u主机中设置bitbucket ssh密钥


现在,您应该能够访问

我在更改为jenkins用户时遇到问题。我需要在系统中正确地创建用户,以便登录到它。我运行此命令以帮助我在系统中创建jenkins用户:

su -s /bin/bash jenkins
1) 首先,通过编辑/etc/passwd文件使jenkins成为真正的用户 改变

/bin/false到/bin/bash

2) 登录到jenkins用户,现在jenkins主目录将是/var/lib/jenkins

su - jenkins
3) 再次生成ssh密钥(将在/var/lib/jenkins/.ssh中创建密钥)

4) 复制id_rsa.pub密钥并粘贴到git的授权密钥文件中

5) 但是,如果它不起作用,您可能必须检查.ssh目录和内容的权限

chmod 700 ~/.ssh && chmod 600 ~/.ssh/*
为了以“jenkins”用户的身份登录,您可以尝试以下方法:

sudo -s -H -u jenkins
并尝试调用:

bash-4.1$ whoami
jenkins

希望有帮助。

詹金斯是一个服务帐户,它没有设计外壳。人们普遍认为,服务帐户不应该能够以交互方式登录

我最初并没有回答这个问题,因为这是一个已经转移到服务器故障的问题的重复。我应该回答,而不是在评论中链接到答案


如果出于某种原因您想以jenkins身份登录,您可以使用:sudo su-s/bin/bash jenkins我所做的:sudo-u jenkins ssh keygen。到目前为止,它仍然有效

确实存在。但它是空的。我所做的就是在那个目录中生成密钥。获取公钥并附加到git服务器上的授权密钥文件中。仍然不起作用…问题是它不能切换到詹金斯家。仍然呆在我家里。但是我仍然以根用户的身份在jenkins home中生成密钥,并且完全按照您所说的那样做,但是错误仍然存在。嗯,我在上面错误地设置了sudo命令-刚刚纠正了这一点。密钥文件的所有者是根用户,对吗?可能jenkins用户没有登录shell,这就是原因。检查
/etc/passwd
文件中是否有类似
jenkins:x:999:1001::/var/lib/jenkins:/sbin/nologin
的条目,并使用
/bin/bash
临时更改
/nologin
以切换到用户jenkins。当jenkins用户没有Centos RPM设置中的登录shell。我遇到了相同的问题:(。