SSH 连接 CN2 VPS 提示"Connection refused"通常表明服务端 SSH 进程未运行或端口未监听,而非防火墙静默丢弃。防火墙若配置为 DROP 策略通常导致连接超时,只有配置了 REJECT 策略或服务主动拒绝时才会出现该报错。
先说结论:"Connection refused"核心原因是目标主机 TCP 栈返回了 RST 包,多数情况是 SSH 服务未启动或监听配置错误,防火墙拦截通常表现为超时。
- 先确认:SSH 服务进程(sshd)是否处于 active 运行状态。
- 先处理:检查服务器本地防火墙及安全组是否放行 22 端口。
- 再验证:使用 telnet 或 nc 命令测试端口可达性。
命令速用版
若具备服务器本地访问权限(如 VNC 或控制台),可直接执行以下命令快速定位:
1. 检查服务状态(Ubuntu 使用 ssh,CentOS 使用 sshd):
systemctl status ssh
2. 检查端口监听情况(确认是否监听 0.0.0.0):
ss -tlnp | grep ':22'
3. 测试外部连通性(在客户端执行):
nc -zv 服务器 IP 22
为什么会这样
"Connection refused"是 TCP 三次握手阶段被明确拒绝的信号,意味着网络路由可达但目标端口无服务响应。这与"Connection timed out"有本质区别,后者通常是数据包被防火墙静默丢弃或路由不可达。当客户端发送 SYN 包后,若服务器内核返回 RST 包,客户端即报"Connection refused",常见于 SSH 服务未启动、端口被占用或防火墙配置了 REJECT 规则。
分步处理
按照以下顺序排查,可覆盖 90% 以上的连接拒绝场景:
第一步:验证网络层连通性
在本地客户端执行 ping 命令,确认 IP 层可达。若 ping 不通,需检查云服务器安全组是否放行 ICMP 协议或本地网络配置。
ping 服务器 IP
第二步:检查 SSH 服务运行状态
登录服务器本地终端,查看服务状态。若显示 inactive (dead),需启动服务。
sudo systemctl start ssh
注意 Ubuntu 22.04 等新版系统服务名可能为 ssh 而非 sshd。
第三步:确认端口监听范围
执行 ss 命令查看监听地址。若显示 127.0.0.1:22,说明仅允许本地访问,需修改 sshd_config 中的 ListenAddress 配置。
sudo ss -tlnp | grep ':22'
第四步:排查防火墙与安全组
检查服务器本地防火墙(如 ufw、firewalld)及云厂商控制台的安全组规则,确保入方向 TCP 22 端口对客户端 IP 开放。
sudo ufw allow 22/tcp
怎么验证是否生效
完成配置修改后,在客户端使用 verbose 模式尝试连接,观察握手过程。
ssh -v user@服务器 IP
若输出中出现"Connected to..."且不再报"Connection refused",说明问题已解决。若仍失败,查看服务端日志/var/log/auth.log 或/var/log/secure 获取详细拒绝原因。
常见坑
1. 服务名称差异:CentOS/RHEL 系统服务名为 sshd,Ubuntu/Debian 系统通常为 ssh,执行 systemctl 命令时需区分。
2. 监听地址限制:sshd_config 中若配置了 ListenAddress 127.0.0.1,外网将无法连接,需注释该行或改为 0.0.0.0。
3. 安全组规则优先级:云厂商安全组规则若有 deny 所有入站流量,需确保允许 22 端口的规则优先级更高或单独添加。
常见问题
Connection refused 和 Connection timed out 有什么区别?
Connection refused 表示目标主机收到了请求但主动拒绝(通常无服务监听),Connection timed out 表示请求发出后无响应(通常被防火墙丢弃或网络不通)。
修改 SSH 端口后连接被拒绝怎么办?
修改端口后必须在 ssh 命令中显式指定-p 参数,并同时更新防火墙和安全组规则放行新端口。
云服务器安全组放行了为什么还是拒绝?
需检查服务器操作系统内部的防火墙(如 iptables、ufw)是否拦截,安全组仅控制云平台网络边界。
参考来源
1. SSH Connection refused port 22 排查步骤
2. Ubuntu 22.04 SSH 连接被拒绝:sshd 未启动或端口被防火墙拦截?
3. SSH 连接被拒绝:常见原因有哪些?_编程语言-CSDN 问答
4. 从 Permission denied 到 Connection refused:SSH 连接失败的 7 种典型场景及解决方案
5. SSH 疑难问题排查:轻松解决连接中的“绊脚石”