我有 Hudson(持续集成系统)和在 Tomcat Windows 服务上运行的 git 插件。msysgit 已安装,并且 msysgit bin 目录位于路径中。PuTTY/Pageant/plink 已安装,并且 msysgit 已配置为使用它们。
我认为,我遇到的问题是拥有 Tomcat/Hudson 服务(本地系统)的用户没有设置 SSH 密钥来克隆 git 存储库。当 git Hudson 插件尝试克隆时,它给出了错误:
$ 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
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何设置以便 git 插件/msysgit 在尝试克隆时知道使用特定的 SSH 私钥?我不认为 Pageant 会起作用,因为 Tomcat 服务是作为“本地系统”用户运行的,但我可能错了。
编辑:
我已经尝试将 Pageant 设置为服务(使用 runassvc.exe),传递适当的密钥,并让它作为“本地系统”运行。其他服务似乎无法从选美服务中看到密钥。
小智 2
您绝对应该能够在非系统用户下运行它。选择/创建一个用户来运行 Hudson,然后尝试使用 ssh user@host 连接到服务器。如果它要求输入密码,那么它显然不会找到您的密钥。
在这种情况下,请仔细检查该密钥是否已加载到 pageant 中(您需要让 pageant 在每次启动时从磁盘加载相关密钥),并且是否设置了 GIT_SSH 环境变量。
另一种方法是设置 GIT_SSH 环境变量以包含对该密钥的引用。我目前使用tunnelier和SV执行此操作,因此例如我的SVN_SSH变量是“sexec -pk=1”,其中sexec是tunnelier的ssh CLI,而-pk=1告诉它使用我在插槽1中的私钥。
归档时间: |
|
查看次数: |
8176 次 |
最近记录: |