You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EC2实例配置CodePipeline后突发无法SSH连接故障求助

EC2实例配置CodePipeline/CodeDeploy后突发SSH连接故障排查

已确认排除的故障项

  • 密钥对有效性:原实例密钥、替换的全新密钥均验证有效,挂载磁盘到正常实例核查.ssh/authorized_keys文件内容无异常
  • 基础网络与实例状态:实例访问IP正确、安全组已放通全流量、实例运行状态正常
  • 镜像复现特征:基于故障实例创建AMI启动新实例,无论使用原密钥还是全新密钥对,均复现相同SSH连接故障
  • 故障关联规律:两台故障实例均在配置CodeDeploy/CodePipeline流水线后1-2天突发断连,故障前SSH可正常访问,首台故障实例ID为i-036dfa448ef7cc321

高概率根因排查优先级排序

1. 第一优先级:核查文件系统权限(匹配所有故障特征)

SSH服务对认证相关路径的权限有强制安全校验,任意一项不符合要求就会直接拒绝公钥认证,客户端不会返回明确的权限类报错,且权限错误会被固化到AMI中,完全符合“换密钥、用故障AMI开新实例仍复现”的故障特征。
将故障实例系统卷挂载到正常实例后,依次核查以下路径权限:

  • 根目录/权限不能为777,默认应为755
  • 登录用户家目录(Amazon Linux默认是/home/ec2-user/、Ubuntu默认是/home/ubuntu/)权限必须为700,属主为对应登录用户,不能归属root或其他用户
  • 家目录下.ssh目录权限必须为700,属主为对应登录用户
  • .ssh/authorized_keys文件权限必须为600,属主为对应登录用户
  • /etc/ssh/目录下所有配置文件权限必须为644,属主为root,不能有全局可写权限
    重点核查CodeDeploy的appspec.yml中所有生命周期钩子脚本:这类脚本默认以root权限执行,如果存在递归修改权限的命令(比如路径写错的chmod -R 777、chown -R操作扫到了家目录、/etc/ssh目录甚至根目录),会直接触发SSH认证失败,这是CodeDeploy部署后突发SSH断连的最高发原因。

2. 第二优先级:核查sshd服务配置与系统内部防火墙

外层安全组放通不代表实例内部配置无异常,需重点核查:

  • 打开故障卷内的/etc/ssh/sshd_config文件,确认PubkeyAuthentication为yes、AuthorizedKeysFile路径为.ssh/authorized_keys、没有配置错误的AllowUsers/DenyUsers规则拦截登录用户
  • 核查故障卷内的/etc/hosts.allow、/etc/hosts.deny文件,确认没有误加SSH拦截规则
  • 核查实例内部防火墙规则(iptables/firewalld/ufw),确认22端口入站规则没有被CodeDeploy的脚本、自动系统补丁更新重置拦截。如果开启了SELinux,还要核查.ssh目录的SELinux上下文是否正确,上下文异常时可以通过restorecon -Rv /home/[登录用户]/.ssh修复。

3. 第三优先级:核查磁盘空间与系统日志

  • 确认故障实例系统卷使用率未达到100%,根分区占满后sshd无法生成临时认证文件,会直接拒绝所有连接
  • 查看故障卷内的SSH认证日志:Amazon Linux/RHEL系日志路径为/var/log/secure,Debian/Ubuntu系为/var/log/auth.log,直接搜索sshd相关报错行,会明确标注连接被拒绝的具体原因,比如权限不符、配置加载失败、模块异常等。

内容的提问来源于stack exchange,提问作者Rivka Chany Moskovits

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.18 16:15:45