AWS EC2上的Jenkins无法连接updates.jenkins.io下载插件求助
问题分析与解决方法
核心原因
- IPv6连通性限制:官方Jenkins更新站
updates.jenkins.io未提供完善的IPv6支持,导致你的IPv6-only EC2实例无法建立连接,curl超时的结果直接验证了这一点。 - 镜像源配置错误:你之前替换的是插件文件的根目录URL,但Jenkins更新需要的是**
update-center.json索引文件**的完整地址,而非插件存储目录,这是导致镜像站配置后仍报错的关键。
解决方法
方法一:强制Jenkins使用IPv4访问更新源
这是最直接的解决方案,绕过IPv6的连通问题:
- 编辑Jenkins启动配置文件(YUM安装的实例通常路径为
/etc/sysconfig/jenkins) - 找到
JENKINS_JAVA_OPTIONS参数,添加-Djava.net.preferIPv4Stack=true,修改后示例:JENKINS_JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true -Djava.awt.headless=true" - 重启Jenkins服务:
sudo systemctl restart jenkins - 验证:重启后进入「Manage Jenkins>Plugins」,点击「Check Now」,或在EC2实例上执行
curl -4 -i https://updates.jenkins.io/update-center.json确认连通性。
方法二:配置正确的镜像更新源
若需保留IPv6环境,需使用提供完整update-center.json索引的镜像源:
- 选择支持IPv6的Jenkins镜像源(需包含可访问的
update-center.json文件) - 进入Jenkins后台「Manage Jenkins>Manage Plugins>Advanced」标签页
- 在「Update Site」区域,将URL替换为镜像源的
update-center.json完整地址(而非插件目录) - 点击「Submit」保存,再点击「Check Now」验证更新功能
备选方案:本地离线索引文件
如果找不到合适的IPv6镜像,可手动生成本地索引:
- 在有IPv4网络的机器上下载官方索引:
curl https://updates.jenkins.io/update-center.json -o update-center.json - 将文件上传至EC2实例,用Python临时启动HTTP服务:
python3 -m http.server 8000 - 在Jenkins更新站点URL填入
http://localhost:8000/update-center.json,即可使用本地索引获取插件列表
额外排查点
- 检查EC2安全组与NACL的出站规则,确认允许IPv6的443端口(HTTPS)访问外部
- 验证EC2的IPv6路由表,确保存在指向Internet Gateway的默认路由
- 若强制IPv4后仍有问题,检查EC2的IPv4 NAT网关配置是否正常
内容的提问来源于stack exchange,提问作者Jiwan
相关产品推荐
相关产品推荐

