【问题标题】:How to configure Hudson and git plugin with an SSH key如何使用 SSH 密钥配置 Hudson 和 git 插件
【发布时间】:2011-01-27 17:16:26
【问题描述】:

我有 Hudson(持续集成系统)和在 Tomcat Windows 服务上运行的 git 插件。 msysgit 已安装并且 msysgit bin 目录位于路径中。 PuTTY/Pageant/plink 已安装,并且 msysgit 已配置为使用它们。

当我运行一个尝试克隆 git 存储库的作业时,我收到以下错误:

$ git clone -o origin git@hostname:project.git "e:\HUDSON_HOME\jobs\Project Trunk\workspace" 
ERROR: Error cloning remote repo 'origin' : Could not clone git@hostname:project.git 
ERROR: Cause: Error performing git clone -o origin git@hostname:project.git e:\HUDSON_HOME\jobs\Project Trunk\workspace 
Trying next repository 
ERROR: Could not clone from a repository 
FATAL: Could not clone 
hudson.plugins.git.GitException: Could not clone 
  1. 从命令行运行 git clone -o origin git@hostname:project.git "e:\HUDSON_HOME\jobs\Project Trunk\workspace" 没有错误。
  2. 我已经确认我的问题与Hudson git clone error 不同,因为 git 在路径中,并且我在 Hudson 的配置系统页面上没有收到有关 git 可执行文件的任何错误。

这让我相信问题在于拥有 Tomcat/Hudson Windows 服务(本地系统)的用户没有设置 SSH 密钥来克隆 git 存储库。

我的问题是,我该如何设置以便 git 插件/msysgit 在尝试克隆时知道使用特定的 SSH 密钥?我认为 Pageant 不会起作用,因为 Tomcat 服务以“本地系统”用户身份运行,但我可能错了。我尝试将 Pageant 设置为服务(使用 runassvc.exe),传递适当的密钥,并让它作为“本地系统”运行。 Tomcat/Hudson 服务似乎无法从选美服务中看到密钥。还有其他设置密钥的技术吗?

谢谢。

编辑:http://n4.nabble.com/Hudson-with-git-and-ssh-td375633.html 上的讨论表明其他人也有类似的问题。建议使用 ssh-agent,并且该工具确实随 msysgit 一起提供,但我不确定如何将它与 Hudson 服务结合使用。不过,如果有人可以填补空白,这是一个很好的线索。感谢彼得对链接的评论。

另外,http://n4.nabble.com/questions-about-git-and-github-plug-ins-td383420.html 的讨论也是从同样的问题开始的。我正在尝试恢复该线程。

【问题讨论】:

  • 谢谢彼得。我也遇到了那个线程。我不确定如何在 Hudson 作为服务运行时使用 ssh-agent。我还希望自那次讨论以来已经开发出一种更正式的方法。我将编辑帖子以提及 ssh-agent。

标签: git tomcat windows-services ssh hudson


【解决方案1】:

把你的 .ssh 文件夹放在下面

C:\Windows\SysWOW64\config\systemprofile

C:\Windows\System32\config\systemprofile

取决于你的系统是 32 还是 64。

这是“本地系统”的“USER”目录。

【讨论】:

    【解决方案2】:

    我发现我必须使用不同的方法才能在 Ubuntu 上运行(使用 Jenkins,而不是 Hudson,尽管否则它看起来基本上是相同的问题。我检查了 %HOME% 环境变量通过 Jenkins GUI 看起来不错。

    我想用来将 Jenkins 识别到 Github 私有存储库的密钥已经存在。我将这些复制到/var/lib/jenkins/.ssh——该密钥和帐户的id_rsaid_rsa.pub 文件。

    最初我将这些复制为“root”,Jenkins 无法访问它们,所以我仍然收到错误(令人困惑的是,错误要求我输入密码,而实际上没有密码) .所以我做了chownchmodchgrp 来设置这些对Jenkins 可用。

    我在以 Jenkins 用户身份登录时执行 git clone 对此进行了测试。

    我知道这个路径是特定于 Ubuntu 的,但是类似的设置可以确保密钥文件在正确的位置可用,并在命令行上进行测试,只需执行 git clone git:myrepo,至少可以确定 Windows 的不同之处。

    【讨论】:

      【解决方案3】:

      另一个关于 windows 的重要说明(我想将其附加到这个答案中,因为我很快就找到了这个问题,但在几个小时的搜索之后才发现我需要这个额外的细节):

      Git 想要将 %HOME% 环境变量设置为您的用户目录(IE C:\Documents and Settings\hudsonuser)...这就是它知道在那里查找带有密钥文件的 .ssh 目录的方式!

      我在here on server fault 发现了这一点(但那里没有足够的声誉来支持它)。

      【讨论】:

        【解决方案4】:

        我们使用 Hudson,使用 ssh 密钥从 git 检查源代码。然而,我们实际上在 ubuntu 服务器上有 Hudson。 Hudson 的 ssh 密钥对位于 ~hudson/id_rsa~hudson/id_rsa.pub

        因此,根据 Windows 设置调整我们的建议:

        我们团队中基于 Windows 的开发人员使用 MSysGit,并通过 git over ssh 定期检查代码——但不使用 Putty/Pageant。由于登录时出现一些协议错误,我们发现 Pageant 很痛苦。相反,他们将 git 配置为使用 openSSH(这是安装期间的选项之一)。然后他们的公钥/私钥对存在于~username/id_rsa~username/id_rsa.pub 中,一切正常。

        所以,我建议您将 git 配置更改为使用 OpenSSH 而不是选美。如果不出意外,您不必担心开始选美。

        您可以使用 PuttyGen 生成密钥。但是,如果您使用的是 OpenSSH 而不是 pageant,则需要导出合适的私钥(从 PuttyGen 顶部的菜单之一)并将其保存为 id_rsa,然后从PuttyGen 的 GUI(它显示但不会为 OpenSSH 保存合适的版本)并将其保存为 id_rsa.pub。这是因为 Putty 使用的密钥格式与 OpenSSH 略有不同。

        当然,您也可以将 hudson 服务器托管在 ubuntu 服务器上(真实服务器或通过 VirtualBox)

        【讨论】:

        • 这是一个很好的答案,威廉。我想如果我要从“本地系统”更改运行 Tomcat/Hudson Windows 服务的用户,那么我可能可以使用这种方法。不过,在我这样做之前,我想知道是否有任何方法可以在不更改服务所有者的情况下做到这一点。我会给别人一个回应的机会。再次感谢。
        • 这是我们在 windows slave 上使用的方法。设置了一个叫hudson的用户,私钥放在~hudson/.ssh/id_rsa,git服务器注册在~hudson/.ssh/known_hosts,hudson从服务改成hudson用户登录。我唯一需要注意的是:如果在 windows 安装上安装了 cygwin,请确保你有 hudson 将 CYGWIN 变量设置为空,否则 mingw 会抛出私钥权限错误。
        • @jlpp:我们在尝试检查 Hudson 中的 bzr 分支时遇到了同样的问题,我们最终改为在本地用户帐户下运行 Tomcat Windows 服务,并且运行良好。
        • 感谢吉尔登克兰茨的建议。
        • 在 Windows (x64) 上,本地系统“用户”“主”目录是 %WINDIR%\SysWOW64\config\systemprofile - 因此您可以将 .ssh 文件夹放在那里,而不必使用其他用户。
        猜你喜欢
        • 1970-01-01
        • 2014-06-26
        • 1970-01-01
        • 2017-01-30
        • 2011-04-12
        • 1970-01-01
        • 2016-01-28
        • 2012-06-21
        • 2018-08-02
        相关资源
        最近更新 更多