如何在TeamCity构建步骤中设置SSH身份验证的git命令

Kla*_*urn 11 git ssh teamcity ssh-keys teamcity-9.0

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

这些git命令需要为git repo使用基于SSH的url,以便作为git服务器的特权用户进行身份验证(因为这些git命令实际上会修改git repo,而不仅仅是读取它).

我知道这个问题.

我已经在VCS结帐模式"自动代理".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.
Run Code Online (Sandbox Code Playgroud)

我已确认该known_hosts文件存在并包含相应的公钥.我还确认C:\Users\systeamcityagent\.ssh它不包含任何私钥(如预期的那样).

我正在运行TeamCity Enterprise 9.1.3.

推荐的解决方案是什么?

Mec*_*eli 10

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

在此输入图像描述

请参阅TeamCity 9.1中的新增功能

  • 您能否详细说明如何在命令行中使用代理或密钥。我仍然很难让它发挥作用。 (2认同)
  • 检查 [official docs](https://confluence.jetbrains.com/display/TCD10/SSH+Keys+Management),那里有很好的解释。您需要对 SSH 密钥有一些基本的了解,但仅此而已。 (2认同)