EC2/AWS、Jenkins、Git、SSH

EC2/AWS、Jenkins、Git、SSH,git,ssh,github,jenkins,jenkins-plugins,Git,Ssh,Github,Jenkins,Jenkins Plugins,[更新2] 那么,当我从CLI运行git时,它会提示我输入密码,这可以吗?我能够使用ssh私钥的密码短语访问github服务器,但在Jenkins中,我从未被提示或要求提供它。 [/Update2] [更新] 对我在EC2上的ubuntu实例上运行这个。我在/var/lib/jenkins/.ssh中生成了ssh密钥,这是jenkins创建的用户。我在Jenkins中设置了安全选项以使用Unix用户/组。 [/更新] 我正试图让詹金斯从git(github)中退出。我得到以下错误: hudson

[更新2] 那么,当我从CLI运行git时,它会提示我输入密码,这可以吗?我能够使用ssh私钥的密码短语访问github服务器,但在Jenkins中,我从未被提示或要求提供它。 [/Update2]

[更新] 对我在EC2上的ubuntu实例上运行这个。我在/var/lib/jenkins/.ssh中生成了ssh密钥,这是jenkins创建的用户。我在Jenkins中设置了安全选项以使用Unix用户/组。 [/更新]

我正试图让詹金斯从git(github)中退出。我得到以下错误:

hudson.plugins.git.GitException: Could not clone [my personal repo]
    at hudson.plugins.git.GitAPI.clone(GitAPI.java:245)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1121)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1063)
    at hudson.FilePath.act(FilePath.java:832)
    at hudson.FilePath.act(FilePath.java:814)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1063)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1218)
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:581)
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:470)
    at hudson.model.Run.run(Run.java:1434)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:239)
Caused by: hudson.plugins.git.GitException: Command "git clone --progress -o origin git@github.com:bobbylo/Verbify.git /var/lib/jenkins/.jenkins/jobs/build_dev/workspace" returned status code 128:
stdout: Initialized empty Git repository in /var/lib/jenkins/.jenkins/jobs/build_dev/workspace/.git/

stderr: Permission denied (publickey).
fatal: The remote end hung up unexpectedly
我已经阅读了Github ssh教程。我已经在EC2实例上生成了一个私钥。将其放入用户jenkins的.ssh目录中。将公钥放置在Github上(尝试了部署密钥和普通SSH密钥)。我已经验证了我可以进行git在线操作(拉、克隆等),并且它可以从CLI与用户一起工作。我已经为用户正确设置了unix用户/组权限(事实上,当我更改它时,我在Jenkin的控制台日志中看到了错误日志的更改)。当我尝试使用Jenkin git插件或执行Jenkins shell命令时,会出现上述错误

我已经阅读了关于ssh代理和ssh添加的内容,以及如何将其与shell启动脚本绑定,这样就不必为每个命令输入密码——我不确定这是否与本文相关


否则我不确定我还能尝试什么。任何提示都会有帮助

您确定Jenkins按照您期望的用户运行吗?如果您将Jenkins作为服务运行,它通常以用户“本地系统帐户”启动

这可能有帮助:。请参阅“配置Jenkins以使用与msysgit Windows installer捆绑的OpenSSH”一节

此外,这一点也帮助了我:

找到了答案:

-事实证明,如果您不是作为守护进程运行它,它将使用运行它的shell环境。 -Jenkins还发现,任何需要用户提示的cmd(如ssh释义)都被视为错误

目前的解决方案是:

-在我通过ssh add将github pub密钥添加到ssh代理之后运行Jenkins,这样它就不会提示解释


如果我想将Jenkins作为守护进程运行,我会想象在运行它之前必须正确设置ssh代理(我认为它不使用当前的shell环境?)。

也面临类似的问题。我所要做的就是确保在您以用户“Jenkins”登录后生成部署密钥这是作为jenkins安装的一部分创建的,然后在您将公钥复制到github的deploy keys中后重新启动jenkins服务器。

没有帮助吗?我认为您使用的是Linux?如果是这样,那么Jenkins可能正在以用户“Jenkins”的身份运行。用户“jenkins”是否有权访问必要的SSH密钥(可能在/var/lib/jenkins/.SSH中)?我在AWS上的ubuntu框上。是的,我使用的用户是/var/lib/jenkins中的jenkins,正如我前面提到的:当我从CLI运行git命令时,我必须输入ssh密钥的解释。对于我设置的其他ssh密钥,一旦正确设置了私有-公共配对,就不需要密码-是吗?我可以使用.bashrc中的脚本将其添加到ssh代理中。我的问题是:Jenkins是否启动了一个合适的shell,并在脚本脱离进程时执行该脚本?