Windows版TeamCity 2021.2无法拉取Bitbucket Git仓库变更报IO流错误
可行解决步骤
检查SSH密钥算法兼容性
Bitbucket 2021年底已默认禁用ssh-rsa(SHA-1)算法的认证,你之前生成的如果是RSA类型密钥会直接被拦截。重新生成ed25519类型密钥:ssh-keygen -t ed25519 -C "teamcity-agent"把新生成的公钥重新上传到Bitbucket账号的SSH密钥列表,使用部署密钥的话则上传到对应仓库的部署密钥配置页。
修正Windows服务身份的SSH密钥路径
TeamCity代理以Windows服务运行时,默认使用本地系统账户,对应的SSH配置目录不是当前登录用户的C:\Users\<用户名>\.ssh,而是C:\Windows\System32\config\systemprofile\.ssh。你需要把私钥放到该目录下,或者修改代理服务的运行身份为有SSH密钥访问权限的普通用户。改用系统Git客户端替代内置JGit
这是规避JGit兼容问题最直接的方案:- 在代理服务器安装最新版Git for Windows,安装时勾选添加到系统PATH,确认服务运行身份执行
git --version可正常返回结果 - 进入TeamCity管理后台,找到对应VCS根,将「Git客户端」选项从内置JGit修改为系统Git
- 保存后重新测试VCS连接即可
- 在代理服务器安装最新版Git for Windows,安装时勾选添加到系统PATH,确认服务运行身份执行
排查网络连通性
切换到代理服务的运行身份打开命令行,执行ssh -Tv git@bitbucket.org,查看连接过程的报错:- 如果提示密钥认证失败,对应修正密钥存储路径或权限
- 如果提示连接超时,检查防火墙、出口代理配置,需要代理的话可以在
C:\Windows\System32\config\systemprofile\.ssh\config中配置SSH代理规则,或者在Git系统配置中设置全局代理:git config --system http.proxy http://<代理地址>:<端口>
升级TeamCity补丁版本
你当前使用的2021.2初始版本(build 99542)存在多个已知的JGit SSH兼容bug,升级到该大版本的最终补丁2021.2.4即可修复相关问题。
内容的提问来源于stack exchange,提问作者To Ka
相关产品推荐
相关产品推荐

