Jenkins连接Git仓库报错:远程端意外挂断问题求助
解决Jenkins连接局域网Git仓库时的「远程端意外挂断」问题
我之前也碰到过几乎一模一样的场景,结合你的环境配置(Jenkins 2.46.3、Java 1.7.51、CentOS 6.6),给你梳理几个最靠谱的排查和解决步骤:
1. 先确认Jenkins运行用户的SSH权限
Jenkins默认是用jenkins系统用户运行的,和你本地操作的个人账号完全是两个不同的环境,这大概率是问题根源:
- 切换到Jenkins用户:
su - jenkins(如果提示无法切换,试试su jenkins,CentOS 6里可能没给jenkins用户分配登录shell) - 手动尝试克隆仓库:
git clone test@10.0.0.1:/path/to/repo- 如果这里也报错,说明是jenkins用户的SSH凭据没配置对:
- 先在jenkins用户下创建
.ssh目录:mkdir ~/.ssh && chmod 700 ~/.ssh - 把你本地能正常克隆的私钥(比如
id_rsa)复制到~jenkins/.ssh/,然后修改权限:chmod 600 ~/.ssh/id_rsa - 还要把Git服务器添加到已知主机:
ssh-keyscan 10.0.0.1 >> ~/.ssh/known_hosts,再修正权限:chmod 644 ~/.ssh/known_hosts
- 先在jenkins用户下创建
- 如果这里也报错,说明是jenkins用户的SSH凭据没配置对:
2. 检查Git插件与Jenkins版本的兼容性
你的Jenkins版本偏老,高版本的Git插件可能和它不兼容:
- 进入Jenkins的「插件管理」,找到Git插件查看当前版本,建议降级到和2.46.3匹配的版本(比如Git插件3.9.0,这个版本和Jenkins 2.46.x适配性很好)
- 同时检查服务器上的Git客户端版本:
git --version,如果版本低于2.10,也容易出连接问题,CentOS 6可以通过ius源用yum升级到2.x版本
3. 核对Jenkins凭据配置细节
有时候看起来配置了相同的凭据,但实际有隐藏问题:
- 一定要选「SSH Username with private key」类型的凭据,而不是「Username and password」(你本地用的是SSH克隆,不是HTTPS)
- 私钥选「Enter directly」,把你本地的私钥内容完整粘贴进去(注意不要多空格或换行)
- 别只依赖「测试连接」按钮,最好建个简单的自由风格项目,配置好Git仓库后手动触发构建,看控制台日志里的详细错误信息(比弹窗提示有用得多)
4. 排查网络与SELinux限制
虽然本地能克隆,但Jenkins用户可能受防火墙或SELinux限制:
- 检查SELinux状态:
getenforce,如果是Enforcing,先临时关闭试试:setenforce 0,如果能成功连接,就需要给Jenkins添加SELinux规则,或者把SELinux设为Permissive(不建议完全关闭) - 测试端口连通性:
telnet 10.0.0.1 22,如果不通,检查防火墙规则,确保允许Jenkins服务器访问Git服务器的22端口
5. 尝试升级Java版本
你的Java 1.7.51虽然能跑Jenkins 2.46.3,但部分Git插件功能可能依赖Java 8:
- 用yum安装openjdk-8:
yum install java-1.8.0-openjdk - 编辑Jenkins启动脚本(比如
/etc/init.d/jenkins),把JAVA_HOME改成Java 8的路径,比如JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk - 重启Jenkins:
service jenkins restart
内容的提问来源于stack exchange,提问作者Bala Krishnan
相关产品推荐
相关产品推荐

