Ubuntu EC2安装Jenkins无法访问 提示连接被拒如何解决
Jenkins公网访问拒连问题排查方案
连接拒绝本质是请求没打到正确的服务监听端口,要么是服务绑定地址不对、要么是两层防火墙(AWS安全组+Ubuntu系统防火墙)没放通对应端口,按以下步骤逐一排查即可:
- 第一步:确认Jenkins实际监听端口
你之前执行curl http://localhost默认访问的是80端口,默认安装的Jenkins不会跑在80端口,本地访问失败是正常现象。执行以下命令查询服务实际监听的端口和绑定地址:
正常默认配置下输出会显示Jenkins监听sudo ss -tulpn | grep jenkins8080端口,如果绑定地址是127.0.0.1代表仅允许本地访问,绑定0.0.0.0代表接受所有网卡的外部请求。如果执行命令后没有任何Jenkins相关的监听记录,说明服务虽然显示active但实际未正常启动,执行sudo journalctl -u jenkins -n 50查看最近50行服务日志排查,常见报错为Java版本不兼容(Jenkins需Java 11/17)、端口被占用、配置文件格式错误。 - 第二步:修正Jenkins监听配置
Jenkins主配置文件路径为/etc/default/jenkins,修改以下两个参数:HTTP_PORT:默认值为8080,如果要直接通过80端口访问就改为80HTTP_HOST:必须设置为0.0.0.0,否则服务仅绑定本地回环地址,公网永远无法访问
修改完成后执行sudo systemctl restart jenkins重启服务生效。
注意:1024以下的端口属于系统特权端口,Jenkins默认以普通用户运行无法直接绑定80端口,需要执行
sudo setcap 'cap_net_bind_service=+ep' /usr/bin/java授予对应权限,更稳妥的方案是保持Jenkins运行在8080端口,通过Nginx做反向代理转发80端口请求。 - 第三步:放行本地防火墙端口
EC2安全组是AWS层面的外层防火墙,Ubuntu系统自带的ufw防火墙如果处于开启状态也会拦截请求。先执行sudo ufw status查看防火墙状态,如果状态为active,根据你设置的Jenkins端口放行规则:# 若使用默认8080端口 sudo ufw allow 8080/tcp # 若修改为80端口 sudo ufw allow 80/tcp # 重载规则生效 sudo ufw reload - 第四步:核对EC2安全组规则
如果你没有修改Jenkins默认的8080端口,仅开放80/443入站规则完全无法匹配Jenkins的监听端口,需要在安全组入站规则中添加对应Jenkins端口的TCP允许规则,测试阶段源地址可设为0.0.0.0/0,后续可收窄为你常用的办公IP降低风险。 - 第五步:连通性验证
先在EC2实例本地执行带端口的curl命令验证服务正常:
如果能返回HTML格式的响应内容,说明本地服务正常,此时通过公网IP+对应端口即可访问Jenkins后台(默认配置下访问地址为# 默认8080端口执行 curl http://localhost:8080http://3.86.201.232:8080),首次登录的初始管理员密码存储在/var/lib/jenkins/secrets/initialAdminPassword文件中。
内容的提问来源于stack exchange,提问作者Hank
相关产品推荐
相关产品推荐

