SSH 密钥管理
您可以将私人 SSH 密钥上传到 TeamCity 项目中。 上传的密钥可用于配置 VCS 根目录,以及在 SSH Agent 构建功能中。
受支持的密钥格式
TeamCity 支持 PEM 和 OpenSSH 格式的密钥。 使用不同格式的键需要进行转换。 例如,您可以使用 PuTTY Key Generator将不受支持的 Putty 私钥( *.ppk
)转换为 PEM 格式。 为了做到这个,您需要导航到 Conversions | 导出 OpenSSH 密钥 菜单。
将SSH密钥上传至TeamCity服务器
要允许 TeamCity 项目通过 SSH 密钥访问远程仓库,您首先需要将密钥上传到这些项目中。
在 项目设置 中,点击 SSH 密钥。
在 SSH 密钥 页面上,点击 上传 SSH 密钥。
在 "上传 SSH 密钥" 对话框中,浏览以查找私钥文件,并为此密钥指定一个名称。
点击 Save 来保存上传的密钥。
上传的 SSH 密钥存储在 <TeamCity 数据目录>/config/projects/<项目>/pluginData/ssh_keys
目录中。 TeamCity 跟踪此目录,因此上传的密钥在当前项目及其子项目中变得可用,无需重新启动服务器。
生成的 SSH 密钥
如果您使用 GitHub Deploy Keys 或类似的身份验证工作流,则可以让 TeamCity 代替您手动生成 SSH 密钥。 这种方法更为安全(因为生成的密钥不会存储在您的本地机器上)并且速度明显更快。 后者尤其有助于您定期重新生成并轮换 SSH 密钥。
在 项目设置 中,点击 SSH 密钥。
点击 Generate SSH Key 按钮。
输入键名,选择键类型,然后点击 Generate。
如果您需要为新生成的密钥提供私钥或公钥:
私钥存储在
数据目录/config/projects/<父项目>/pluginData/ssh_keys
目录中。一个公共密钥可以从主 SSH Keys 页面访问(点击所需密钥下面的 Copy the public key 链接)。 将此密钥粘贴到您的版本控制服务中(例如,在 GitHub 中:“Repository settings | Deploy Keys | Add deploy key”)。
在您的 TeamCity VCS 根目录的 验证设置 中选择生成的密钥。 为了您的便利,TeamCity 中生成的密钥被放置在一个单独的类别中。
配置 VCS 根设置
一旦所需的 SSH 密钥被上传,修改 VCS Root 设置以选择您的项目应使用的密钥。
将 SSH 密钥分发给构建代理
如果您配置了 代理端签出(agent-side checkout),服务器就会将 SSH 密钥传递给代理。 在构建过程中,Git 插件从服务器下载密钥到代理,并在 git fetch/clone
完成后删除该密钥。
为了将密钥从服务器转移到代理,TeamCity 使用 DES 对称加密对其进行加密。 为了更安全的方式,配置一个 HTTPS 连接,使代理和服务器之间建立连接。
除了 VCS 根,上传的 SSH 密钥也可以在 SSH Agent 构建功能中使用。 查看此链接以获取更多信息:SSH Agent。
REST API
TeamCity REST API允许外部应用程序和脚本通过URL访问TeamCity资源。 您可以利用此功能上传 SSH 密钥并自定义 VCS Root 设置。
查看已上传的密钥
将新的 SSH 密钥上传到项目中
正文:私钥文件的内容
内容类型头部:"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