无法访问EC2 EBS实例,SSH端口22连接失败求助
既然你已经排除了安全组、NACLs、VPC路由表这些网络层面的常见问题,也重启过实例、对比过系统日志没发现异常,那咱们可以从以下几个方向深入排查:
尝试替代登录方式,获取系统直接访问权限
优先试试EC2控制台自带的**实例连接(EC2 Instance Connect)**功能直接登录(只要实例满足基础条件就支持);如果这个也不行,就把故障实例的EBS卷卸载下来,挂载到同区域的一个健康EC2实例上,这样就能直接查看故障系统的配置和日志了。检查SSH服务的配置与日志
挂载EBS卷后,先看/etc/ssh/sshd_config文件:- 确认
Port配置是不是还是22(有没有被误修改成其他端口) - 检查
PermitRootLogin、PasswordAuthentication、PubkeyAuthentication这些认证规则有没有被错误调整
再去/var/log/secure(Amazon Linux 1/2的默认SSH日志路径)里翻记录,这里会详细记录连接失败的原因——比如密钥不匹配、服务启动失败、用户权限限制等,比系统启动日志更有针对性。
- 确认
排查系统资源占用问题
有时候实例CPU跑满、内存耗尽或者磁盘IO卡死,会导致SSH服务根本无法响应请求。去EC2控制台的**监控(Monitoring)**面板,看看故障实例的CPU使用率、内存占用、磁盘读写指标,确认是不是资源耗尽导致的假死。如果是内存不足,可能需要临时升级实例规格或者清理系统缓存;如果磁盘满了,挂载EBS卷后清理大文件即可。检查磁盘挂载与文件系统状态
EBS卷挂载失败、文件系统损坏也会导致SSH服务启动失败。挂载EBS到健康实例后,先执行文件系统检查:fsck /dev/xvda1 # 注意替换成实际的磁盘设备名,比如/dev/nvme0n1p1再看
/etc/fstab里的挂载配置,确认有没有因为磁盘UUID变化、挂载路径错误导致的启动挂载失败。检查实例本地防火墙规则
虽然安全组和NACLs已经排查过,但实例内部的iptables或者firewalld可能被添加了限制规则。挂载EBS卷后,执行命令查看本地防火墙:iptables -L -n确认有没有拒绝22端口入站请求的规则存在。
小提示:如果是Amazon Linux 2系统,挂载卷后还可以模拟查看SSH服务状态:
systemctl status sshd,看看有没有服务启动失败的报错信息。
内容的提问来源于stack exchange,提问作者Lloyd Moore

