第一次接手阿里云ECS的人,多半遇到过这种情况:SSH或远程桌面说断就断,网页终端一直转圈,或者直接提示连接超时。这时候很容易急着重启。其实大部分问题十几分钟就能查清楚,前提是按顺序来,别靠反复重启碰运气。

先看一个案例,再说通常该从哪里查起。
一个典型案例
某电商团队的测试服务器前一天还能登录,第二天早上运维同学用本地终端执行ssh,结果卡在连接超时。控制台里实例显示运行中,CPU和内存曲线也很平稳。团队第一反应是服务器挂了,直接重启,问题还在。
后来查到原因,前一天有同事为了调试Web服务,临时改了安全组。他把入方向22端口的授权对象从原来的指定IP段换成了一个错误的地址段,原有规则也删掉了。实例本身没坏,只是网络层把访问挡在了外面。
这类问题很常见。服务器在跑,不等于网络能通,远程连接失败往往卡在访问链路的某一环。
第一步,先看报错属于哪一类
远程连接失败时,报错信息基本能指向方向,先分清楚能省不少时间。
- 连接超时,说明数据包没到服务器,或者被安全策略丢掉了,多半和安全组、公网IP、路由有关。
- 连接被拒绝,网络是通的,但目标端口没有服务在监听,常见于SSH没启动或端口被改过。
- 认证失败,TCP已经连上,但密钥或密码不对,提示Permission denied,这时问题出在登录凭证,跟网络关系不大。
本地执行ssh如果出现Connection timed out,先查网络层;出现Connection refused,就进系统里看服务状态;出现Permission denied,重点核对密钥和用户名。
第二步,确认实例状态和公网地址
这一步在控制台就能完成,不需要太多技术背景。
- 看实例状态是不是“运行中”。已停止或欠费停机的实例,自然连不上。
- 确认公网IP还在。按量付费实例停机后,公网IP可能被释放,重新启动时地址可能已经变了。
- 如果用的是弹性公网IP,确认它还绑定在正确的实例上,没有被解绑。
- 在本地对公网IP执行ping,如果完全不通,也要考虑本地网络或运营商的限制。
很多人换过公网IP,却还在用旧地址连接,这是新手最容易漏掉的一点。
第三步,核对安全组规则
安全组是阿里云远程连接不上时最常见的原因。它挡在实例前面,入方向规则决定哪些来源能访问哪些端口。
检查的时候,下面几个地方值得逐条看。
- 入方向有没有放行22端口(Linux)或3389端口(Windows)。
- 授权对象对不对。如果写的是固定IP,而你现在的出口IP已经变了,连接就会被拒。0.0.0.0/0虽然省事,但等于整个公网都能访问,不适合长期保留。
- 规则之间有没有冲突。存在优先级更高的拒绝规则时,放行规则再多也不生效。
- 实例是不是绑了多个安全组。不同安全组的规则会叠加,只看其中一个,容易漏掉真正的限制。
安全组改完通常立即生效,不用重启实例。改动前最好先在测试环境验证一遍,再应用到生产机器。
第四步,进系统内部查SSH服务
如果网络层没问题,但连接被拒绝,就要借助控制台的Workbench或VNC进入系统。这种方式不依赖SSH,正好适合做救援入口。
进去以后,可以按这几项逐一检查。
- systemctl status sshd,确认SSH服务在不在运行。Ubuntu上服务名一般是ssh。
- ss -tlnp | grep 22,看22端口是否处于监听状态。
- 检查 /etc/ssh/sshd_config 里的Port配置,确认端口没有被误改。
- 查看防火墙状态,比如firewalld或ufw,确认没有拦截SSH流量。
- 检查磁盘是否写满。磁盘满了,有些服务会异常,连带影响登录。
改完sshd_config,先用sshd -t检查语法,确认无误再重载服务。配置写错又直接重载,SSH可能起不来,最后把自己锁在门外。
第五步,排查密钥和登录用户名
出现Permission denied,多半是密钥或用户名对不上。常见情况有三种,用了错误的密钥文件,密钥权限太宽,或者用户名不对。比如阿里云的Ubuntu镜像默认用户是ubuntu,不是root,直接用root登录自然会失败。
私钥权限也要注意。Linux或macOS上,私钥一般要设为600,权限过宽时ssh客户端会直接拒绝使用。Windows上用Xshell、PuTTY这类工具,私钥格式有要求,不匹配时要先转换格式。
一个补充案例
另一位独立开发者在Windows实例上遇到远程桌面连不上的问题。他在系统里开启了一个安全加固脚本,脚本自动改了远程桌面端口,但控制台安全组仍然只放行原来的3389端口。最后通过控制台的VNC登录,把端口配置改回一致,问题才解决。系统内外的配置必须对得上,任何一边改了,都可能让远程连接失效。
预防建议
出了问题再排查,总是比较被动。下面几件事平时做好,能少走很多弯路。
- 关键实例绑定固定的弹性公网IP,避免IP变动。
- 安全组只授权必要的来源IP,并在备注里写清用途和负责人,半年后别人接手时才看得懂。
- 开通控制台的远程连接备用通道,SSH失效时还有入口可用。
- 修改SSH配置前先备份原文件,并保留一个已登录的会话。断开前能回退,比事后补救省事得多。
- 定期核对密钥文件和登录用户名,团队内统一一份规范。
阿里云服务器远程连接不上,多数时候是网络、安全组和系统配置之间有一处对不上。按从外到内、从网络到服务的顺序查,大部分问题都能定位。遇到复杂情况,记下现象和改动,比反复重启更有用。