云服务器SSH连接不上怎么办?连接超时、拒绝连接和认证失败分别怎么查
云服务器显示运行中,SSH却进不去?先根据连接超时、拒绝连接或认证失败定位问题,再检查地址、端口、服务和账号,避免盲目重启或重装。

本页目录
云服务器控制台显示“运行中”,网站也还能打开,你准备登录更新程序,SSH窗口却一直转圈。
重新输密码没有用,换一个连接工具还是失败。眼前只有“重启”和“重装”两个按钮,但网站里还有数据,你又不敢随便点。
先把这两个按钮放一边,保存终端里的完整报错。连接超时、连接被拒绝和认证失败,发生在不同阶段,排查方向也不同。
这篇针对Linux云服务器的SSH登录故障。客户端可以是Windows、macOS或Linux;Windows服务器的远程桌面问题不在本文范围内。示例命令需替换成自己的连接信息,不能照搬演示地址。
先看SSH报错:你卡在连接的哪一步?
SSH登录至少要经过找到目标地址、连接端口、建立SSH会话和验证身份等步骤。终端给出的错误,是缩小范围的线索,但不是唯一原因的证明。
| 终端提示或现象 | 优先检查 | 此时不应急着做什么 |
|---|---|---|
| Connection timed out,长时间等待后超时 | IP、端口、访问路径、过滤规则和主机状态 | 反复重置密码 |
| Connection refused,连接很快被拒绝 | 目标端口是否监听、服务是否运行、是否有主动拒绝规则 | 认定一定是服务器关机 |
| Permission denied,身份认证失败 | 用户名、认证方式、密钥、账户与登录策略 | 继续扩大安全组开放范围 |
| 主机密钥发生变化的警告 | 当前连接的机器身份和主机指纹 | 直接删除记录并忽略警告 |
| Connection reset或握手阶段断开 | 服务日志、连接限制、中间设备与协议协商 | 硬套上面某一种原因 |
例如,认证失败说明已经进入SSH身份验证阶段。继续反复开端口,通常解决不了用错用户名或密钥的问题。
另外,网站能打开,只能说明对应的网站访问路径可用。网站使用的端口、入口和SSH不同,甚至还有缓存或反向代理,不能据此认定SSH一定正常。

排查前,先核对IP、端口和用户名
不要直接沿用连接工具里的旧记录
打开服务商控制台或交付信息,逐项核对当前公网地址、SSH端口、操作系统和登录账号。重装、更换实例、调整网络之后,旧记录不一定还对应现在的机器。
SSH常见端口是22,但实际端口以你的配置为准。用户名也不能一律填root,不同系统镜像和服务商交付方式会使用不同账号。
如果用域名连接,确认它当前解析到哪一个地址。域名有IPv4和IPv6记录时,也要留意客户端实际选中了哪一种地址,避免一直检查另一条路径。
公网地址与内网地址要分清楚
电脑在家里或公司,通过互联网连接服务器时,需要有可以到达的入口。直接填写服务器内网地址,并不会自动建立访问路径。
如果你不确定控制台里几个IP分别做什么,可以先看云服务器公网IP和内网IP的区别。使用跳板机或已有专网时,则要连同中间节点一起检查。
记录故障发生的时间,以及出错之前做过什么。修改端口、调整防火墙、重装系统、换网络,这些动作都能帮助缩小排查范围。
连接超时:先查端口能否到达,再查服务器内部
Windows可以先测试目标TCP端口
在自己电脑的PowerShell里,可以用下面的命令检查目标端口连接情况:
Test-NetConnection -ComputerName 203.0.113.10 -Port 22
这里的203.0.113.10是文档示例地址,22也是示例端口,必须替换成自己的信息。这个命令发起连接测试,不会修改云服务器配置。Microsoft命令说明
关注输出中的RemoteAddress、RemotePort和TcpTestSucceeded。结果为True,表示这次TCP连接测试成功,不代表SSH身份认证一定成功;结果为False,也不能单独证明服务器已经关机。
安全组和系统防火墙,需要分别检查
云平台的访问规则与Linux内部的防火墙不是同一层。只在其中一处允许访问,不代表整条路径都通了。
检查规则时要对应TCP协议、实际SSH端口和自己的来源地址。如果规则只允许某个来源IP,换网络以后需要核对新的出口地址。不要为了测试方便,把所有端口都向整个互联网开放。
还要核对实例是否有可用公网入口、关联的网络规则是否正确,以及平台是否有维护或网络异常通知。控制台显示运行中,并不能证明操作系统和每项服务都健康。
Ping只能作为补充线索
Ping使用的协议与SSH不同。Ping成功不等于SSH端口可用;Ping失败也不等于SSH必然失败,因为ICMP与TCP可以受到不同规则处理。
可以从另一条正常网络,用相同地址和端口再做一次对照测试。如果结果不同,应同时检查来源地址限制和两条访问路径,不能立即下结论说是服务商线路故障。
连接被拒绝:检查SSH监听在哪个端口
通过控制台进入系统,再查看监听状态
SSH已经进不去时,不要要求自己通过SSH执行修复命令。先使用服务商提供的控制台、VNC或串行终端进入系统。
取得合法管理权限后,可在服务器里查看TCP监听情况:
sudo ss -lntp
ss的这些选项用于列出监听中的TCP套接字、数字地址及相关进程信息。需要相应权限才能看到完整的进程信息。Linux ss手册
在输出中查找实际SSH端口,并核对监听地址。只监听本地回环地址,与监听对外可访问的地址,不是一回事。端口被其他进程占用时,也不能只因为看到一个监听项,就认定SSH服务正常。
服务名称和管理方式,要按系统确认
在使用systemd的系统上,SSH服务单元常见名称为ssh或sshd。例如:
systemctl status ssh --no-pager
这只是查看状态。如果系统使用sshd,就改查相应单元;提示找不到ssh单元,不足以证明SSH没有安装。采用socket激活或其他服务管理方式时,还要核对相应监听单元与启动方式。
重点看服务是否失败,以及失败原因。端口冲突、配置错误与主机密钥缺失,需要不同处理,不适合直接复制一条“重启SSH”命令碰运气。
连接被拒绝也能来自主动拒绝流量的规则。因此,即使服务正在监听,仍要结合访问规则和日志判断,不能把所有refused都归为服务未启动。
Permission denied:检查身份验证,不要继续乱改端口
用户名必须对应服务器上的账户
同一把密钥对不同用户并不自动通用。用户名填错,即使你手里拿着正确服务器的密钥,也会认证失败。
先核对系统镜像说明和交付账号。若平台要求先用普通管理账号登录,就遵循该方式,不要因为root登录失败而直接放开root远程登录。
如果密码登录曾经正常,现在突然失败,通过控制台检查账户状态、登录策略和对应时间的认证日志。不要连续猜密码,避免触发额外的登录限制。
密钥登录要确认客户端实际提交了哪把密钥
当电脑保存了多把密钥时,连接工具选中的密钥不一定是你以为的那把。确认私钥文件路径,以及服务器端对应用户是否配置了匹配的公钥。
公钥认证失败还需要检查文件归属、权限及登录策略。不能把“Permission denied”全部翻译成“密码错了”;括号中列出的认证方法也值得保留给排查人员。
排查时不需要把私钥或密码发到文章评论、聊天群或工单正文。提供报错和经过处理的日志即可,需要账户级操作时再按平台正式流程处理。
用详细日志确认失败发生在哪个阶段
安装了OpenSSH客户端的电脑,可以在终端发起带调试输出的连接:
ssh -vvv -o ConnectTimeout=10 -p 22 admin@203.0.113.10
把账号、地址与端口换成实际值。这会尝试登录并打印诊断信息,不会修改服务器的SSH配置。日志会显示连接、握手和认证阶段的信息,有助于判断失败发生在哪里。OpenSSH客户端手册
分享日志前遮盖地址、用户名、本地路径等不需要公开的信息。截取与错误相关的片段,并保留时间和上下文,比只发一句“登录失败”更容易查清楚。
主机指纹变化了,能不能直接忽略警告?
不要直接忽略。客户端记住的主机密钥与当前服务器提供的密钥不一致,需要先核对机器身份。
重装系统、更换机器或服务商调整实例,都能造成正常变化;连错地址或连接被干扰也需要排除。通过可信控制台或服务商渠道核对当前主机指纹,再决定更新本机的对应记录。
不要删除整个已知主机文件,也不要为了消除提示而长期关闭主机身份检查。目标是确认连接到了自己的机器,而不仅是让警告消失。
SSH进不去,控制台能帮你检查什么?
控制台入口不依赖系统内的SSH登录服务,适合确认系统有没有完成启动、是否出现磁盘或网络错误,以及SSH服务当前状态。具体能做什么取决于平台提供的入口。MatrixIDC VNC救援说明
进入以后,先观察,不要立刻重启。查看系统负载、内存、磁盘和启动信息,能避免把系统资源问题误判为密码错误。
例如,磁盘或inode耗尽时,系统写入日志、创建临时文件等操作会受到影响;内存压力严重时,服务也会出现无响应。阿里云的远程连接FAQ同样列出了系统资源与登录配置等不同排查方向。云厂商远程连接FAQ
控制台也进不去时,记录平台提示、实例状态和故障时间,联系服务商继续检查。不要把“SSH失败”和“控制台入口失败”当成同一个现象提交。
修改SSH配置前,怎样避免把自己锁在外面?
保留现有会话,并先确认恢复入口可用
如果你还有一个已经登录的终端,先留着。修改前备份相关配置,并确认控制台能够实际进入,而不是只看到一个控制台按钮。
一次只改与当前证据有关的项目。端口、登录方式和防火墙同时修改,失败后很难知道是哪项造成的。
先检查配置语法,再让配置生效
OpenSSH服务端提供配置测试方式。在相应Linux环境中,可以使用实际安装的sshd路径执行检查,例如:
sudo /usr/sbin/sshd -t
这会检查配置有效性及主机密钥等基本条件,不会启动一个新的监听服务。若服务使用自定义配置文件,需要针对相同配置检查;路径不同时按实际安装位置调整。OpenSSH服务端手册
测试通过也不等于登录一定成功。用户匹配规则、访问路径和实际服务加载方式,仍需要结合环境确认。配置还可能通过Include引入其他文件,不能只检查主文件中的一行。sshd配置说明
用新窗口重新登录,验证后再关旧窗口
按系统实际方式应用已确认的修改后,打开另一个终端,使用目标账号和正确端口建立新连接。
已有会话仍然能操作,不足以证明新连接已经恢复。新窗口成功登录、必要权限正常,并且业务没有受到意外影响后,再关闭旧会话。

什么情况下考虑重启,什么情况下不要重装?
当日志和状态检查表明系统或服务异常,且你清楚重启会影响哪些业务、已有恢复入口和必要备份时,才把重启作为具体处理步骤。
如果只是用户名错误、来源IP不在允许范围、端口填错,重启不会替你修正这些信息。重装则会改变系统环境,还可能影响原有数据,不能作为连接失败后的默认操作。
提交MatrixIDC支持工单时,建议写清实际连接地址与端口、报错原文、故障时间及所在网络,并说明控制台是否能进入、最近是否修改过配置。不要把密码或私钥直接贴进工单正文。
SSH连接故障的处理顺序是:确认目标,按报错检查,利用控制台查证据,一次修正一项,再用新连接验收。先把原因找清楚,比反复重启更有用。