SSH 密钥管理
您可以将私人 SSH 密钥上传到 TeamCity 项目中。 上传的密钥可用于配置 VCS 根目录,以及在 SSH Agent 构建功能中。
受支持的密钥格式
TeamCity 支持 PEM 和 OpenSSH 格式的密钥。 使用不同格式的键需要进行转换。 例如,您可以使用 PuTTY Key Generator将不受支持的 Putty 私钥( *.ppk )转换为 PEM 格式。 为此,请导航到 转换 | 导出 OpenSSH 密钥 菜单。
将SSH密钥上传至TeamCity服务器
要允许 TeamCity 项目通过 SSH URL 访问远程仓库,您首先需要将您的私钥上传到这些项目。
在 项目设置 中,单击 SSH 密钥。
在 SSH 密钥 页面上,单击 上传 SSH 密钥。

在" 上传 SSH 密钥 "对话框中,浏览选择一个私钥文件并为此密钥指定一个名称。
单击 保存 以保存上传的密钥。
您还可以在创建新项目时上传私钥 from repository URLs。 如果您使用 SSH URL,TeamCity 会将 身份验证 模式切换为"SSH 密钥"并显示之前上传的私钥列表。 如果您之前未上传所需的密钥,请单击 上传 SSH 密钥 并指向 TeamCity 所需的文件。

上传的 SSH 密钥存储在以下目录:
<TeamCity Data Directory>/config/projects/<project>/pluginData/ssh_keys
如果从"创建项目"页面上传了密钥,TeamCity 会将其分配给所创建项目的父项目。 在这种情况下,上传的密钥将保存到以下目录:
<TeamCity Data Directory>/config/projects/<Parent_Project_ID>/pluginData/ssh_keys
生成的 SSH 密钥
如果您使用 GitHub Deploy Keys 或类似的身份验证工作流,则可以让 TeamCity 代替您手动生成 SSH 密钥。 这种方法更为安全(因为生成的密钥不会存储在您的本地机器上)并且速度明显更快。 后者尤其有助于您定期重新生成并轮换 SSH 密钥。
在 项目设置 中,单击 SSH 密钥。
单击 生成 SSH 密钥 按钮。

输入密钥名称,选择密钥类型,然后单击 生成。
如果您需要为新生成的密钥提供私钥或公钥:
私钥存储在
<TeamCity Data Directory>/config/projects/<parent project>/pluginData/ssh_keys目录中。公钥可从主 SSH 密钥 页面访问(单击所需密钥下的 复制公钥 链接)。 将此密钥粘贴到您的版本控制服务中(例如,在 GitHub 中:"Repository settings | Deploy Keys | Add deploy key")。
在您的 TeamCity VCS 根目录的 验证设置 中选择生成的密钥。 为了您的便利,TeamCity 中生成的密钥被放置在一个单独的类别中。

配置 VCS 根设置
当您的 VCS 根配置为通过 SSH URL(例如, git@github.com:... )与远程存储库一起工作时,才会使用私有 SSH 密钥。 如果您使用 SSH URL 创建项目并从"创建项目"页面选择/上传私钥,TeamCity 会自动设置所需的设置,您无需修改 VCS Root(VCS 根)。
否则,如果您希望更新通过 token 或 password 进行验证的项目,使其改为使用 SSH key,您将需要手动更新相应的 VCS Root(VCS 根)。
导航到 管理 | <Your_Project> | VCS 根 并单击所需根目录旁边的 编辑。
更新 获取 URL 和/或 推送 URL 字段以改用 SSH URL。 例如,将
https://github.com/username/repository_name.git改为git@github.com:username/repository_name.git。向下滚动到 验证设置 并选择 私钥 选项之一。

单击页面底部的 测试连接 以检查您当前的值,并单击 Apply 以保存并退出根目录设置。
将 SSH 密钥分发给构建代理
如果您配置了 代理端签出(agent-side checkout) ,服务器就会将 SSH 密钥传递给代理。 在构建过程中,Git 插件从服务器下载密钥到代理,并在 git fetch/clone 完成后删除该密钥。
为了将密钥从服务器转移到代理,TeamCity 使用 DES 对称加密对其进行加密。 为了更安全的方式,配置一个 HTTPS 连接,使代理和服务器之间建立连接。
除了 VCS 根目录外,上传的 SSH 密钥还可用于 SSH 代理 构建功能。 查看此链接以获取更多信息: SSH Agent。
REST API
TeamCity REST API允许外部应用程序和脚本通过URL访问TeamCity资源。 您可以利用此功能上传 SSH 密钥并自定义 VCS Root 设置。
查看已上传的密钥
将新的 SSH 密钥上传到项目中
正文:私钥文件的内容
Content-Type 标头:"text/plain"
生成新密钥
keyName— 任何有效的字符串,即您的新密钥名称。keyType— 可以是"RSA"或"ED25519"。
设置 VCS 验证设置
将"身份验证方法"切换为"上传的密钥"。 请求正文:"TEAMCITY_SSH_KEY"。
/app/rest/vcs-roots/<locator>/properties/authMethod选择一个特定的 SSH 密钥。 请求主体:SSH 密钥名称。
/app/rest/vcs-roots/<locator>/properties/teamcitySshKey指定密码加密的 SSH 密钥所需的密码。 请求正文:纯密码字符串。
/app/rest/vcs-roots/<locator>/properties/secure:passphrase