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/

相关推荐
handsome09163 小时前
苹果电脑可以使用yunedit-ssh代替winscp
ssh·管理linux文件
Qimooidea4 小时前
祁木 CAD Translator:基于阿里云百炼与 DeepSeek 的图纸翻译实战
阿里云·云计算
楚来客7 小时前
云计算全栈架构详解
云计算
Elastic 中国社区官方博客8 小时前
如何为阿里云 Elasticsearch 创建推理端点,连接器,Workflow 并写入数据
大数据·人工智能·elasticsearch·搜索引擎·阿里云·云计算·全文检索
Database_Cool_9 小时前
实时计数器/排行榜首选:阿里云 Tair 高并发数据结构实践
数据结构·数据库·阿里云·云计算
hey you~11 小时前
呼叫中心系统技术选型全景指南:从CTI架构到云原生演进的技术决策框架
系统架构·云计算·技术选型·呼叫中心·cti
Devlive 开源社区11 小时前
一口气新增三家云——七牛云 Kodo、AWS S3、Cloudflare R2;并支持应用内自动检测与一键升级
云计算·aws
小白考证进阶中19 小时前
阿里云认证重要通知(Clouder+ACX职业岗位)
阿里云·云计算·阿里云acp报名·阿里云acp备考·阿里云aca证书·阿里云aca大模型·阿里云aca报名
spider_xcxc21 小时前
告别单点故障:阿里云CLB负载均衡从入门到实战
阿里云·云计算·负载均衡
阿里云云原生1 天前
阿里云可观测 2026 年 6 月产品动态
阿里云·云计算