AWS EC2实例重启后SSH/SFTP连接失败的全面排查指南

在AWS云环境中,EC2实例重启后无法通过SSH或SFTP连接是一个常见问题。本文将从多个维度分析可能的原因,并提供详细的解决方案。

问题现象

  • SSH客户端连接超时或连接被拒绝

  • SFTP工具无法建立连接

  • 实例状态显示运行中但网络不可达

简单排查:可能是安全组、网络ACL或实例配置问题导致连接失败。建议检查安全组入站规则、网络连接和实例状态。

系统化排查流程

1. 基础状态检查

1.1 实例状态验证

通过AWS CLI检查实例状态

bash 复制代码
aws ec2 describe-instances --instance-ids i-1234567890abcdef0 --query 'Reservations[0].Instances[0].State.Name'

确保实例状态为 running ,而不是 stoppedstoppingpending

1.2 系统状态检查

在AWS控制台中检查:

  • 系统状态检查:验证底层硬件问题

  • 实例状态检查:验证操作系统级别问题

2. 网络配置排查

2.1 安全组配置检查

安全组必须允许SSH流量(端口22):

确保有以下规则:

  • 类型:SSH

  • 协议:TCP

  • 端口范围:22

  • 来源:您的IP地址或 0.0.0.0/0(临时测试)

2.2 网络ACL检查

检查子网的网络ACL是否阻止SSH流量:

bash 复制代码
# 查看网络ACL规则
aws ec2 describe-network-acls --filters "Name=association.subnet-id,Values=subnet-12345678" --query 'NetworkAcls[0].Entries'

确保入站和出站规则都允许SSH流量。

2.3 路由表验证
bash 复制代码
# 检查路由表
aws ec2 describe-route-tables --filters "Name=association.subnet-id,Values=subnet-12345678"

确保有指向互联网网关或NAT设备的路由。

3. 实例级别排查

3.1 使用EC2 Instance Connect测试

如果启用了EC2 Instance Connect:

bash 复制代码
# 通过Instance Connect连接
aws ec2-instance-connect send-ssh-public-key \
    --instance-id i-1234567890abcdef0 \
    --availability-zone us-east-1a \
    --instance-os-user ec2-user \
    --ssh-public-key file://my_key.pub
3.2 使用Session Manager连接(无需SSH)

通过AWS Systems Manager Session Manager访问实例:

bash 复制代码
# 启动会话
aws ssm start-session --target i-1234567890abcdef0

前提条件

  • 实例已安装SSM Agent

  • 实例具有适当的IAM角色

4. 操作系统级别问题排查

4.1 检查SSH服务状态

通过Session Manager连接后:

bash 复制代码
# 检查SSH服务状态
sudo systemctl status sshd
sudo systemctl status ssh

# 如果服务停止,启动服务
sudo systemctl start sshd
sudo systemctl enable sshd

# 检查SSH配置
sudo cat /etc/ssh/sshd_config | grep -v "^#" | grep -v "^$"
4.2 检查磁盘空间
bash 复制代码
# 检查磁盘使用情况
df -h

# 检查根分区是否已满
du -sh /var/log/*
4.3 检查系统日志
bash 复制代码
# 查看系统日志
sudo tail -f /var/log/messages
sudo journalctl -u sshd -f

# 检查cloud-init日志
sudo cat /var/log/cloud-init.log
sudo cat /var/log/cloud-init-output.log

5. 弹性IP与网络接口

5.1 检查弹性IP关联
bash 复制代码
# 查看弹性IP关联
aws ec2 describe-addresses --filters "Name=instance-id,Values=i-1234567890abcdef0"
5.2 检查网络接口
bash 复制代码
# 查看网络接口详情
aws ec2 describe-network-interfaces --filters "Name=attachment.instance-id,Values=i-1234567890abcdef0"

6. 高级故障排除

6.1 使用VPC Reachability Analyzer
bash 复制代码
# 创建路径分析
aws ec2 create-network-insights-path \
    --source i-1234567890abcdef0 \
    --destination-port 22 \
    --protocol tcp

# 启动分析
aws ec2 start-network-insights-analysis \
    --network-insights-path-id <path-id>
6.2 检查实例元数据
bash 复制代码
# 从实例内部获取元数据(通过Session Manager)
curl http://169.254.169.254/latest/meta-data/
问题2:磁盘空间不足

解决方案

bash 复制代码
# 清理日志文件
sudo journalctl --vacuum-size=100M
sudo rm -f /var/log/*.log.*
sudo truncate -s 0 /var/log/*.log

# 清理包缓存
sudo yum clean all  # Amazon Linux
sudo apt clean     # Ubuntu
问题3:文件系统错误

解决方案

  1. 停止实例

  2. 分离根卷

  3. 挂载到临时实例进行修复

  4. 重新挂载并启动原实例

8. 预防措施

8.1 创建自定义AMI

定期创建已知良好的AMI备份:

bash 复制代码
aws ec2 create-image \
    --instance-id i-1234567890abcdef0 \
    --name "Production-Server-Backup-$(date +%Y%m%d)" \
    --description "Backup before maintenance"
8.2 使用启动模板和用户数据
bash 复制代码
#!/bin/bash
# 用户数据脚本 - 自动修复常见问题
yum update -y
systemctl enable sshd
echo "fs.file-max = 65536" >> /etc/sysctl.conf
sysctl -p
8.3 监控和告警

设置CloudWatch告警:

  • CPU使用率

  • 磁盘空间

  • 网络流量

  • 状态检查失败

总结

当AWS EC2实例重启后无法SSH连接时,建议按照以下顺序排查:

  1. 基础状态:实例运行状态和系统检查

  2. 网络配置:安全组、网络ACL、路由表

  3. 实例访问:使用Session Manager或EC2 Instance Connect

  4. 操作系统:SSH服务状态、磁盘空间、系统日志

  5. 高级诊断:VPC Reachability Analyzer

  6. 急速开户:https://mycloudpartners.com/https://mycloudpartners.com/

相关推荐
weixin_307779131 天前
云计算大数据Azure服务分类详解
大数据·分类·自动化·云计算·azure
2601_958320571 天前
【零基础新手入门 】OpenClaw 2.6.6 对接阿里云百炼配置教程(包含安装包)
人工智能·阿里云·云计算·open claw·小龙虾·open claw安装·open claw一键安装
byoass1 天前
企业云盘高可用架构:主备切换、负载均衡与健康检查实战
运维·网络·安全·架构·云计算·负载均衡
魔极客1 天前
第十二节:龙晰 AnolisOS-23.4-x86_64.qcow2 虚拟机的网络配置方式及 ssh 连接
网络·ssh·php
OpenClawCSDN2 天前
2026年怎么集成Hermes Agent/OpenClaw?阿里云搭建及token Plan配置攻略
阿里云·云计算
byoass2 天前
企业云盘与设计软件深度集成:AutoCAD/Revit/SolidWorks插件开发与API集成实战
服务器·网络·数据库·安全·oracle·云计算
OpenClawCSDN2 天前
2026年5月阿里云怎么搭建OpenClaw/Hermes Agent?百炼token Plan配置详解教程
阿里云·云计算
snpgroupcn2 天前
通过退役17套SAP ECC历史系统,降低道达尔能源的SAP数据相关风险
云计算·数据迁移·sap ecc
OpenClawCSDN2 天前
2026年5月阿里云OpenClaw/Hermes Agent集成攻略+百炼token Plan配置全览教程
阿里云·云计算
谷哥的小弟2 天前
(最新版)腾讯云服务器项目部署教程(4)— 部署项目
linux·运维·服务器·云计算·腾讯云·云服务器·项目部署