使用TeamCity构建GitLab上Maven项目时BuildAgent报错求助
嘿,我之前也碰到过类似的同服务器下TeamCity构建GitLab项目时SSH连接出问题的情况,结合你描述的细节,给你几个可以尝试的实操方向:
检查TeamCity Agent运行用户的SSH权限
你提到添加了root和服务器的SSH密钥,但要重点确认运行TeamCity Agent的用户(通常是teamcity或自定义用户)有没有权限读取这些密钥,更稳妥的方式是直接给这个用户生成专属SSH密钥,再把公钥添加到GitLab仓库的部署密钥里。另外要注意密钥文件权限必须设为600,所在.ssh文件夹权限设为700,不然SSH会拒绝使用这些密钥。修正
teamcity.git.use.native.ssh的配置位置
这个属性的正确配置渠道有两个:要么在Agent的buildAgent/conf/buildAgent.properties文件里添加,要么在TeamCity服务器端的项目构建配置中,到Build Parameters里新增系统属性(键填teamcity.git.use.native.ssh,值设为true)。配置后一定要重启Agent服务,确保配置生效。临时切换HTTP/HTTPS协议测试
既然配置环节能正常浏览仓库,说明HTTP连接是通的,可以临时把GitLab仓库URL改成HTTP/HTTPS格式(比如http://你的GitLab地址/组名/项目名.git),然后在TeamCity里配置GitLab用户名+密码,或者个人访问令牌,看看能不能构建成功。如果成功了,说明问题确实出在SSH配置上;如果还是失败,那可能要排查Maven依赖拉取或Agent的网络配置问题。查看Agent的详细报错日志
到Agent的buildAgent/logs目录下找teamcity-agent.log或build.log,里面会有更细节的报错信息——比如是密钥验证失败,还是主机指纹未信任?如果是主机验证问题,可以在Agent运行用户的~/.ssh/known_hosts文件里手动添加GitLab服务器的主机指纹,或者临时关闭StrictHostKeyChecking(仅测试用,不建议长期开启),在~/.ssh/config里添加:Host 你的GitLab服务器地址 StrictHostKeyChecking no确认GitLab SSH端口与本地防火墙设置
哪怕在同一服务器,如果GitLab的SSH端口不是默认的22,TeamCity Agent的SSH连接可能没指定端口,要确保仓库URL里加上正确端口,比如ssh://git@你的GitLab地址:端口号/组名/项目名.git。另外检查本地防火墙(比如iptables、ufw)有没有限制TeamAgent用户的SSH出站请求,直接用Agent运行用户身份执行ssh git@你的GitLab地址,能快速验证该用户的SSH连接是否正常。
内容的提问来源于stack exchange,提问作者Tito Tigi

