TeamCity从SSH Git存储库获取更改时如何解决超时异常

TeamCity从SSH Git存储库获取更改时如何解决超时异常,git,ssh,teamcity,gitolite,Git,Ssh,Teamcity,Gitolite,我已将Git存储库从网络上的共享文件夹移动到运行gitolite的SSH服务器。我添加了一个供TeamCity使用的公钥/私钥,并将VCS的根指向它。当测试连接成功并且我的构建配置显示挂起的更改时,这些都可以正常工作 但是,当TeamCity尝试获取这些挂起的更改时,我会出现以下错误: 'git fetch' command failed. exception: Timeout exception 切换到详细日志记录,我看到它在90秒后超时-我希望在正常情况下,获取这些更改只需几秒钟 自从我开

我已将Git存储库从网络上的共享文件夹移动到运行gitolite的SSH服务器。我添加了一个供TeamCity使用的公钥/私钥,并将VCS的根指向它。当测试连接成功并且我的构建配置显示挂起的更改时,这些都可以正常工作

但是,当TeamCity尝试获取这些挂起的更改时,我会出现以下错误:

'git fetch' command failed.
exception: Timeout exception
切换到详细日志记录,我看到它在90秒后超时-我希望在正常情况下,获取这些更改只需几秒钟

自从我开始尝试解决这个问题以来,我已经将我的VCS根目录更改为“默认私钥”,并添加了所需的.ssh文件夹,其中包含config、id\u rsa和known\u hosts文件。我在日志中看到了指纹和密码消息,直到我在这些文件中放入了必要的内容,现在我的服务器又重新发出超时异常,就像我在VCS根目录中指定密钥时一样

如果我从命令行运行Git,我就能够在没有任何提示的情况下克隆存储库(当我像上面一样设置了.ssh文件夹时)。这是来自另一个用户帐户,因为TC是在默认系统帐户下作为服务运行的,但我不认为这是原因,因为正如我所说的,我可以看到TC已获取对该帐户的.ssh文件夹的更改


有什么问题吗?

您已经为TeamCity服务器设置了密钥,但是您是否也为代理设置了密钥?这可以解释为什么在配置中测试连接可以工作,但在代理执行时它不工作

调试问题的快速方法:

在VCS设置中,将服务器上的
VCS签出模式
更改为
自动
,然后查看它是否工作

更新:


您能否以
TeamCity
用户身份登录到TeamCity服务器并从您的git repo运行manula
git clone
?通过这种方式,您可以看到它正在工作,还可以另存为受信任的主机等。

我没有使用team city,但我使用了GO(来自thoughtworks)进行持续集成,我遇到了类似的问题

是否可以检查在生成代理上运行任务的用户的环境变量路径。
如果您使用的是msysgit,那么msysgit中的bin和cmd文件夹都应该在路径中

当你有巨额回购时就会发生这种情况。您可以按照以下步骤操作:

增加OSX或Linux用户计算机中的超时:

  • 创建~/.ssh/config文件(如果它还不存在)
  • 将SSH ServerAliveInterval ServerAliveCountMax设置添加到文件中,例如:
  • 主机*
    ServerAliveInterval 86400
    ServerAliveCountMax 4


    我认为(默认情况下)服务器进行签出并将源代码发送给构建代理。这不正确吗?@GraemeF-那么您能验证一下
    VCS签出模式吗?查看我的更新答案。它已设置为“自动在服务器上”,这是默认设置。@GraemeF您能否登录到TeamCity服务器并以TeamCity用户的身份从git repo运行manula git克隆?通过这种方式,您可以看到它正在工作,还可以保存为受信任的主机等。我只是尝试了一下,并意识到我不能从服务帐户轻松地完成这项工作。当我从管理员帐户ssh到我的服务器时,我得到了指纹提示,但我无法从其他帐户回答这个问题。