【问题标题】:"Algorithm negotiation fail" with SSH authentication on TeamCityTeamCity 上使用 SSH 身份验证的“算法协商失败”
【发布时间】:2025-12-07 09:10:02
【问题描述】:

我们有一个 TeamCity 7.1.5,我们的 Git 存储库托管在 TFS 2017 上。我们想切换到使用公钥/私钥的 SSH 身份验证。所以我创建了一个 openSSH 密钥对并在我的 TFS 用户上添加了公钥。在我的本地机器上,这按预期工作。

但是当我想将我的 TeamCity VCS Root 配置为也使用 SSH 时,我总是遇到以下异常:

Failed for the root 'VCS ROOT' #830: List remote refs failed: 
com.jcraft.jsch.JSchException: Algorithm negotiation fail

私钥在 TeamCity 服务器上可用,config 应该是正确的:

Host tfs.company.com
    IdentityFile ~/.ssh/tfs.company.com_rsa_sha1

我已经尝试了 Default Private KeyPrivate Key 选项,有和没有密码。

我发现唯一的事情就是升级JSch库,但我不知道如何升级这个库以及将jar文件放在哪里。

有没有人有类似的问题或知道如何升级库?

【问题讨论】:

  • SSH 中的算法不仅仅是公钥。还有更多。您可以非常简单地从命令行 ssh 对它们进行投资,但我相信您也可以从 jsch 获得一些调试。首先,我会尝试更新客户端。

标签: git ssh teamcity teamcity-7.0


【解决方案1】:

显然解决方案非常简单。我只需要从http://www.jcraft.com/jsch/ 下载JSch 库的最新版本0.1.54 并放入C:\Program Files\TeamCity\webapps\ROOT\WEB-INF\lib。重新启动 TeamCity,一切正常。

【讨论】: