“Connection refused”表示目标服务明确拒绝连接,主因是服务未监听该 端口 或仅绑定 127.0.0.1。需用 ss/netstat/lsof 查监听地址,修改配置将 bind 地址改为 0.0.0.0,重启服务,并检查 防火墙 与云安全组是否放行端口。

“Connection refused”不是网络不通,而是目标地址确实在响应——但明确拒绝了你的连接请求。核心原因通常只有两个:服务根本没在监听该 端口,或监听了却只绑定了本地地址(如 127.0.0.1),不接受远程访问。
确认服务是否真正在监听目标端口
先登录服务器,用以下命令检查端口实际监听状态:
- ss -tuln | grep : 端口号(推荐,速度快、信息全)
- netstat -tuln | grep : 端口号(传统方式,部分系统需安装 net-tools)
- lsof -i : 端口号(可直接看到占用进程名和 PID)
重点看输出中的 Local Address 列。如果显示的是 127.0.0.1: 端口 或 ::1: 端口,说明服务只接受本机访问;若显示 0.0.0.0: 端口 或 [::]: 端口,才表示对所有地址开放。
检查服务配置是否绑定到正确地址
很多服务(如 java 应用、nginx、hadoop、自定义后台程序)默认监听 127.0.0.1。需手动修改其 配置文件:
- Java 类应用:检查启动参数或 配置文件 中 host、bind、address 等字段,把
localhost或127.0.0.1改为0.0.0.0或具体内网 IP(如192.168.8.119) - Hadoop:修改
core-site.xml中fs.defaultFS的 host 部分,并确保/etc/hosts中该主机名映射到真实 IP - Nginx/apache:检查
listen指令,例如改为listen 80;(等价于 0.0.0.0:80)而非listen 127.0.0.1:80;
改完务必重启服务,再用 ss 命令验证监听地址是否已更新。
验证 防火墙 与安全组是否放行
即使服务监听了 0.0.0.0,外部仍可能被拦截:
- 本地防火墙:运行
firewall-cmd --list-ports(firewalld)或ufw status(ubuntu),确认目标端口已开放 - 云服务 器必须同步检查安全组:阿里云 、 腾讯 云、AWS 等控制台中,入方向规则需显式允许该端口 + 源 IP 段(如
0.0.0.0/0) - 临时测试可关闭防火墙:
systemctl stop firewalld(centos)或ufw disable(Ubuntu),验证后再恢复策略
用 telnet 或 nc 远程验证连通性
从客户端机器执行,不要在服务器本机测:
- telnet IP 端口:返回
Connected to IP.表示通;Connection refused表示服务未监听或绑错地址;Connection timed out才是防火墙 / 网络拦截 - nc -zv IP 端口:输出
succeeded!即通,更简洁可靠
注意:telnet 在部分系统需手动安装(如 yum install telnet 或 apt install telnet);nc(netcat)基本预装。