如何在TeamCity构建步骤中设置基于SSH认证的git命令

14

我需要在TeamCity的构建步骤中执行git命令。

这些git命令需要使用基于SSH的URL来访问git存储库,以便作为特权用户对git服务器进行身份验证(因为这些git命令实际上将修改git存储库,而不仅仅是读取它)。

我知道这个问题

我已经在“代理自动检出”模式下正确配置了VCS根,并且ssh工作正常。

然而,正如文档中所述,TeamCity会暂时在代理的文件系统上保存密钥,并在git fetch / clone完成后将其删除。

因此,即使TeamCity在代理端检出时正确使用了SSH密钥,但是该密钥故意在构建后无法访问。

但我真的想在之后使用这个密钥!

git命令生成的输出为:

[06:12:29][Step 3/4] Permission denied (publickey).
[06:12:29][Step 3/4] fatal: Could not read from remote repository.
[06:12:29][Step 3/4] 
[06:12:29][Step 3/4] Please make sure you have the correct access rights
[06:12:29][Step 3/4] and the repository exists.

我已确认 known_hosts 文件存在且包含适当的公钥。我还确认了 C:\Users\systeamcityagent\.ssh 不包含任何私钥(正如预期的那样)。

我正在运行 TeamCity Enterprise 9.1.3。

针对此问题,建议采取什么解决方案?


你解决了这个问题吗?我也遇到了类似的情况,我很难让ssh代理与我的git push一起工作。 - Bronumski
1个回答

13

Teamcity 9.1引入了一个名为SSH Agent的新功能,它允许您使用服务器存储的SSH密钥来建立代理端SSH连接:

输入图像描述

请参阅TeamCity 9.1中的新功能


2
你能详细说明一下代理或密钥在命令行中的使用吗?我仍然很难让它正常工作。 - Bronumski
2
请查看官方文档,里面讲得非常清楚。你只需要一些基本的SSH密钥理解即可。 - Mecaveli
哦,这真的让我免于试图重新发明轮子。 - uthomas

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