“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)基本预装。










