教程导航
教程 VPS选购指南

云服务器SSH连接不上怎么办?连接超时、拒绝连接和认证失败分别怎么查

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

文档维护:MatrixIDC 1 人阅读
云服务器SSH连接不上?先看报错,再决定查哪里
示例截图
本页目录

云服务器控制台显示“运行中”,网站也还能打开,你准备登录更新程序,SSH窗口却一直转圈。

重新输密码没有用,换一个连接工具还是失败。眼前只有“重启”和“重装”两个按钮,但网站里还有数据,你又不敢随便点。

先把这两个按钮放一边,保存终端里的完整报错。连接超时、连接被拒绝和认证失败,发生在不同阶段,排查方向也不同。

这篇针对Linux云服务器的SSH登录故障。客户端可以是Windows、macOS或Linux;Windows服务器的远程桌面问题不在本文范围内。示例命令需替换成自己的连接信息,不能照搬演示地址。

先看SSH报错:你卡在连接的哪一步?

SSH登录至少要经过找到目标地址、连接端口、建立SSH会话和验证身份等步骤。终端给出的错误,是缩小范围的线索,但不是唯一原因的证明。

终端提示或现象 优先检查 此时不应急着做什么
Connection timed out,长时间等待后超时 IP、端口、访问路径、过滤规则和主机状态 反复重置密码
Connection refused,连接很快被拒绝 目标端口是否监听、服务是否运行、是否有主动拒绝规则 认定一定是服务器关机
Permission denied,身份认证失败 用户名、认证方式、密钥、账户与登录策略 继续扩大安全组开放范围
主机密钥发生变化的警告 当前连接的机器身份和主机指纹 直接删除记录并忽略警告
Connection reset或握手阶段断开 服务日志、连接限制、中间设备与协议协商 硬套上面某一种原因

例如,认证失败说明已经进入SSH身份验证阶段。继续反复开端口,通常解决不了用错用户名或密钥的问题。

另外,网站能打开,只能说明对应的网站访问路径可用。网站使用的端口、入口和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配置说明

用新窗口重新登录,验证后再关旧窗口

按系统实际方式应用已确认的修改后,打开另一个终端,使用目标账号和正确端口建立新连接。

已有会话仍然能操作,不足以证明新连接已经恢复。新窗口成功登录、必要权限正常,并且业务没有受到意外影响后,再关闭旧会话。

修改SSH前确认控制台、保留会话、检查语法并验证新连接

什么情况下考虑重启,什么情况下不要重装?

当日志和状态检查表明系统或服务异常,且你清楚重启会影响哪些业务、已有恢复入口和必要备份时,才把重启作为具体处理步骤。

如果只是用户名错误、来源IP不在允许范围、端口填错,重启不会替你修正这些信息。重装则会改变系统环境,还可能影响原有数据,不能作为连接失败后的默认操作。

提交MatrixIDC支持工单时,建议写清实际连接地址与端口、报错原文、故障时间及所在网络,并说明控制台是否能进入、最近是否修改过配置。不要把密码或私钥直接贴进工单正文。

SSH连接故障的处理顺序是:确认目标,按报错检查,利用控制台查证据,一次修正一项,再用新连接验收。先把原因找清楚,比反复重启更有用。