ECS实例无法SSH连接,排查全攻略
SSH连不上ECS是最常见的求助问题之一。原因可能有很多:网络不通、端口被封、安全组没开、sshd服务挂了、密钥问题等。本文提供一套系统化的排查流程,帮你快速定位和解决问题。
排查步骤
第一步:确认网络连通性。在本地执行 ping 你的ECS公网IP。如果不通,可能是ECS没有公网IP、安全组没放行ICMP、或者VPC路由问题。如果ping通但SSH连不上,继续下一步。
第二步:检查安全组规则。登录ECS控制台 → 安全组 → 入方向规则。确认有一条规则允许TCP 22端口(或你修改后的SSH端口)从你的IP访问。如果设置为"全部"来源,检查是否被其他规则覆盖。
第三步:检查端口是否开放。在本地执行 telnet 你的ECS公网IP 22。如果连接超时,说明端口不通(安全组或防火墙问题)。如果连接被拒绝(Connection refused),说明端口是通的但sshd服务可能没运行。
第四步:使用VNC登录。如果SSH确实连不上,通过ECS控制台的"远程连接"→"VNC连接"登录。VNC不依赖网络端口,只要ECS在运行就能连接。登录后检查sshd状态:systemctl status sshd。如果sshd挂了,重启它:systemctl restart sshd。
第五步:检查sshd配置。查看 /etc/ssh/sshd_config,确认Port、PermitRootLogin、PasswordAuthentication等配置正确。检查 /var/log/secure 中的SSH日志,找到具体拒绝原因。
常见原因和解决方案
安全组没开22端口:添加入方向规则放行TCP 22。防火墙拦截:检查iptables规则,放行SSH端口。sshd服务异常:VNC登录后重启sshd。DDoS导致IP被封:联系阿里云解封或更换公网IP。系统资源耗尽:内存不足导致无法创建新连接,VNC登录后清理进程。
预防措施
修改SSH端口(不用默认22)、使用密钥认证、配置fail2ban、设置云监控告警(SSH连接失败次数)。
