更改运行Jenkins进程的用户

4

我想知道如何更改我的Ubuntu上Jenkins服务器的用户。

http://[server]:8080/systemInfo 页面上,我可以找到一个环境变量: USER jenkins

我的动机是将用户设置为“git”以解决Jenkins无法克隆同一台计算机上托管用户“git”的git项目的问题:

hudson.plugins.git.GitException: 
Command "git clone --progress -o origin ssh://git@[server]:22/~/[repo].git /var/lib/jenkins/workspace/[project]" returned status code 128:
stdout: Cloning into /var/lib/jenkins/workspace/[project]...
stderr: Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password)

在为Jenkins用户生成SSH密钥并确认Jenkins的SSH设置准确无误之后,执行...。
感谢您的帮助!

你谈到了验证Jenkins中的设置。但是,您是否验证过如果您切换到jenkins用户,是否可以在不需要密码的情况下ssh git@[server] - mpontillo
从控制台运行与Jenkins相同的git命令需要密码并且可以正常工作。但是,当在Jenkins设置中定义此密码时,如上所述,它会失败。 - Martin Pernollet
如果需要密码,则密钥对未正确设置。请在Jenkins服务器上尝试chmod 700 ~jenkins/.ssh; chmod 600 ~jenkins/id_rsa - mpontillo
1
你可以尝试使用ssh -v git@[server]命令并将输出内容发布出来,这可能会对你有所帮助。 - mpontillo
1
最后,请确保公钥已正确安装在 Git 端。听起来你已经做过了,但再次检查也无妨。 - mpontillo
嘿,谢谢 :) ssh myuser@server.com mkdir .ssh scp ~/.ssh/id_rsa.pub myuser@server.com:.ssh/authorized_keys 绝对解决了问题 :/ 感谢您的建议。 - Martin Pernollet
1个回答

3

我认为更改Jenkins运行用户并不是解决方案。

您应该以Jenkins用户身份登录Ubuntu系统(或使用sudo su - jenkins命令),然后验证ssh git@[your-git-server]是否正常工作。很可能是由于缺少SSH密钥或与SSH密钥相关的文件或目录权限问题。

或者,git命令行工具无法识别从Jenkins内部配置的SSH密钥。当我有一个有效的jenkins用户和一个有效的~jenkins/.ssh/id_rsa以及~jenkins/.ssh/known_hosts中的有效条目时,我知道它们可以正常工作。


当调用 jenkins@[server]:~/.ssh$ ls 时,我得到了 id_rsa、id_rsa.pub 和 known_hosts。 - Martin Pernollet
另外,以下命令会打印什么内容:openssl rsa -inform pem -in ~jenkins/.ssh/id_rsa_test -check -noout?(它是否会要求输入密码?如果是这样的话,你可能需要考虑使用未加密的RSA密钥,除非你想每次都手动启动带有ssh-agent的Jenkins服务器。) - mpontillo
更正:openssl rsa -inform pem -in ~jenkins/.ssh/id_rsa -check -noout。(必须以 root 或 jenkins 用户身份执行此命令) - mpontillo
1
jenkins 作为输入时,输出为:RSA密钥正常 - Martin Pernollet
1
您可能还需要检查 ~jenkins/.ssh 目录及其内容(以及沿着路径的任何目录)的权限。请尝试 chmod 700 ~jenkins ~jenkins/.ssh,然后执行 chmod 600 ~jenkins/.ssh/* - mpontillo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接