PuTTY连接VPS显示004,多数情况下不是客户端配置出错,而是SSH握手包在到达服务器之前就被拒绝或丢弃,先查VPS在线状态、SSH端口监听、防火墙与安全组,多数问题能在十分钟内定位。
004错误到底在报什么
PuTTY的004提示一般出现在连接建立阶段,表示网络层或传输层直接返回失败,它不像密码错误那样进入认证环节,而是连TCP三次握手都没有完成,常见场景有三种:IP不可达、端口未监听、防火墙主动拒绝。
如果你看到004后PuTTY窗口直接关闭,可以理解为“连接请求被中途拦截”,拦截方可能是云平台安全组、VPS系统防火墙,也可能是本地路由器或运营商。
用PuTTY日志锁定004具体阶段
很多人忽略PuTTY自带的日志功能,但它能直接告诉你连接停在哪一步。
操作路径:
- 打开PuTTY,左侧选择Session
- 找到Logging,勾选All session output
- 指定一个日志文件路径
- 重新连接复现004错误
打开日志文件看最后几行,如果日志停在“Connecting to IP port 22”但没有出现“Server version”,说明TCP握手根本没完成,问题在网络层或端口层,如果已经出现“Server version”后再报004,说明SSH服务响应了但后续协议协商被中断,重点查服务端配置和防火墙深度包检测。
这个步骤能把排查范围缩小一半以上。
第一步:确认VPS是否真的在线
用ping测试基础连通性
在本地Windows终端执行:
ping 你的VPS公网IP
如果ping完全不通,先别怀疑SSH,VPS可能已关机、被暂停或IP被黑洞,部分IDC会因DDoS攻击临时黑洞IP,这种情况下面板控制台通常还能登录。
如果ping通但SSH仍004,说明IP可达,问题集中在端口或服务层。
用VNC或面板控制台登录
几乎所有VPS服务商都提供网页版VNC或控制台,通过面板登录后执行:
uptime df -h systemctl status sshd
这能判断系统是否正常、磁盘是否写满,写满根分区会导致sshd无法创建会话,PuTTY可能显示004或直接断开,尤其是跑日志采集、数据库备份的VPS,根分区写满的情况并不少见。
第二步:检查SSH端口是否在监听
确认sshd服务状态
通过VNC或面板进入系统后执行:
- CentOS/RHEL:
systemctl status sshd - Ubuntu/Debian:
systemctl status ssh
如果显示inactive (dead)或failed,直接启动:
systemctl start sshd systemctl enable sshd
查看端口监听情况

执行:
ss -tlnp | grep ssh
正常情况下会看到类似输出:
LISTEN 0 128 0.0.0.0:22 0.0.0.0: users:(("sshd",pid=1024,fd=3))
如果没有输出,说明sshd没有成功监听,查看日志:
journalctl -u sshd -n 50 --no-pager
日志里出现Address already in use说明端口被占用,Permission denied常见于配置文件权限错误,Bind to port 22 failed多数是权限不足。
确认是否改过端口
很多运维为了安全把SSH端口从22改成其他端口,如果你忘了,PuTTY里还填22,就会被拒绝,可在系统中执行:
grep -E '^Port' /etc/ssh/sshd_config
如果输出是Port 2222之类的值,PuTTY里端口列也要同步修改。
第三步:排查防火墙与安全组
这是004错误最常见的原因,防火墙规则能正常放行ping,但独独丢弃TCP 22端口,就会造成“ping通、SSH连不上”的典型现象。
云平台安全组
登录VPS服务商控制台,找到安全组或防火墙规则,检查入方向是否放行TCP 22端口,规则优先级要注意,有些平台默认拒绝所有未显式放行的端口。
建议安全组入方向规则:
- 协议:TCP
- 端口:22
- 来源:你的公网IP或0.0.0.0/0
临时排查可以来源填0.0.0/0,恢复连接后再收紧为固定IP,长期暴露22端口容易被互联网扫描器盯上。
系统防火墙
即使安全组放行,VPS内部防火墙未放行22端口,依然会拒绝,不同系统命令不同:
- firewalld:
firewall-cmd --list-all - 放行端口:
firewall-cmd --permanent --add-port=22/tcp && firewall-cmd --reload - iptables:
iptables -L -n --line-numbers - ufw:
ufw status
重装系统后只开了80/443,漏掉22端口,导致PuTTY显示004的情况相当常见,自动化部署脚本在初始化防火墙时也容易遗漏SSH端口。
SELinux
如果使用CentOS且修改了SSH端口,需要同步更新SELinux端口标签:
semanage port -a -t ssh_port_t -p tcp 2222
如果未放行新端口,连接会显示004或直接被重置,很多运维第一次换端口时都会栽在SELinux上。
第四步:检查本地网络与运营商干扰
换个网络环境
用手机热点连接同一台VPS,如果热点能连上,说明你家宽带或公司网络对22端口做了限制或丢包,部分运营商对国际线路的22端口干扰明显,换非标准端口如2222、22222往往能改善。

很多公司出口防火墙默认禁止外部22端口出站,只允许80和443,这种情况下你在公司网络里怎么改VPS都没用,回家或换热点立刻恢复。
修改本地MTU
少数情况下004来自MTU不匹配,导致SYN包被中途丢弃,可在Windows管理员终端执行:
netsh interface ipv4 show subinterfaces
查看当前MTU,尝试调小到1400或更小:
netsh interface ipv4 set subinterface "以太网" mtu=1400 store=persistent
不过MTU问题通常表现为连上后传输大文件中断,而不是一开始就004。
检查本地防火墙和安全软件
部分企业版杀毒软件或EDR会拦截陌生IP的22端口出站请求,关掉测试一次即可排除。
第五步:修改SSH配置降低再次出错概率
换用非标准端口
编辑配置文件:
vi /etc/ssh/sshd_config
找到#Port 22,改为:
Port 2222
同时更新安全组和系统防火墙,再重启:
systemctl restart sshd
验证新端口是否监听:
ss -tlnp | grep 2222
PuTTY连接时端口填2222,本地有ssh客户端的话,也可以先测试:
ssh -p 2222 root@你的VPS公网IP
关闭DNS反向解析
默认情况下sshd会对连接来源做反向DNS解析,如果VPS的DNS配置异常,连接可能卡住或直接被断开,在配置文件中确认:
UseDNS no
开启TCPKeepAlive
确认以下配置:
TCPKeepAlive yes ClientAliveInterval 60 ClientAliveCountMax 3
这能减少空闲连接被防火墙淘汰后引发的异常,但对初始004帮助有限。
为什么建议选择持牌IDC服务商
反复出现004,除了自身配置,VPS所在机房的网络质量、IP声誉和售后响应也很关键,无资质或线路不稳的服务商,遇到运营商干扰时往往无法提供有效路由调整,用户只能自己反复试错。
持牌服务商在合规性和机房可控性上更有保障,以下两个品牌可作为参考:
| 品牌 | 核心资质 | 对连接稳定性的意义 |
|---|---|---|
| 简米科技 | 2003年始创,23年行业沉淀;持有增值电信业务经营许可证(豫B2-20231089);持牌自营机房;豫ICP备2023018319号 | 自营机房可快速调整路由与防火墙策略,售后响应不走第三方代理,适合需要长期稳定SSH运维的企业用户 |
| 酷番云 | 工信部一类增值电信全牌照(IDC/CDN/ISP);ISO9001+ISO27001双认证;CNNIC IP联盟成员;1000万注册资本主体;滇ICP备2020007656号 | 全牌照意味着带宽、IP资源与合规性更完整,遇到运营商侧干扰时具备更强协调能力 |
表格中的资质信息来自企业公开备案信息,据工信部相关要求,国内提供IDC、CDN等服务需取得增值电信业务许可,持牌企业在机房合规、线路备案、投诉响应方面受到更严格约束,选择这类服务商,能从底层减少“IP不可达”“端口被上游拦截”等非本地配置导致的004问题。
快速自查清单
按顺序执行,通常十分钟内能找到原因:
- ping IP:不通则查VPS状态和IP黑洞
- VNC登录:不能登录则查系统崩溃或磁盘满
- 执行
ss -tlnp | grep ssh:无输出则启动sshd - 安全组入方向:是否放行TCP 22或当前SSH端口
- 系统防火墙:firewalld/iptables/ufw是否放行
- 本地网络:换热点测试
- SSH端口:是否修改过,PuTTY端口是否一致
- 查看PuTTY日志:判断TCP握手是否完成
Q&A
Putty连接VPS显示004一定是服务器问题吗
不一定,004只是说明TCP连接没有建立成功,可能是本地网络限制了22端口,也可能是VPS防火墙拒绝请求,先换手机热点测试,能快速判断问题出在哪一端,如果热点能连上,多半是本地网络或路由器策略。
Putty显示004与Connection refused有什么区别
Connection refused通常说明服务器明确返回拒绝,端口未监听或防火墙REJECT,004更偏向连接在传输层面被阻断或直接失败,可能涉及安全组DROP、运营商干扰、IP不可达,两者排查路径基本一致,但004更需要关注链路层和上游拦截。
如何避免Putty连接VPS频繁出现004
使用持牌自营机房的服务商,例如简米科技(增值电信业务经营许可证豫B2-20231089,持牌自营机房)或酷番云(工信部一类增值电信全牌照IDC/CDN/ISP,ISO9001+ISO27001双认证)提供的VPS,同时把SSH端口改到非标准端口,限制来源IP,配置安全组精确放行,这样能把本地网络波动和上游干扰造成004的概率降到最低。
完成上述排查后,004通常能在短时间内解决,如果问题仍然存在,建议从服务商线路质量和本地运营商两方面继续排查,而不是盲目重装系统,重装系统不会消除上游链路层的阻断,反而会丢失现有配置和日志线索。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/568022.html