修改sshd配置后EC2实例SSH连接被拒,有无简便方法恢复访问?
EC2实例SSH连接被拒解决方案
问题现象
修改sshd配置并重启服务后,SSH登录提示:ssh: connect to host x.x.x.x port 22: Connection refused
完整调试日志如下:
OpenSSH_8.1p1, LibreSSL 2.7.3 ... debug2: resolve_canonicalize: hostname x.x.x.x is address debug2: ssh_connect_direct debug1: Connecting to x.x.x.x port 22. debug1: connect to address x.x.x.x port 22: Connection refused ssh: connect to host x.x.x.x port 22: Connection refused
附相关配置截图:

常见疑问解答
- 不会永久失去该EC2实例的访问权限,只要不执行终止实例操作,所有数据和配置都可恢复
- 暂不支持从AWS控制台直接一键重置
/etc/ssh/sshd_config文件,但存在比挂载存储卷更简便的修复方案
最简修复方案(按优先级排序)
方案1:使用EC2串行控制台(无需实例网络通,无需预装额外组件)
- 进入EC2控制台,找到故障实例,先停止实例(请勿选择终止操作)
- 点击实例右上角「操作」下拉菜单,依次选择「监控和故障排除」->「EC2串行控制台」->「连接」
- 登录实例后执行命令修改配置:
sudo vi /etc/ssh/sshd_config - 删掉
Listen 127.0.0.1规则行,同时确认PasswordAuthentication配置符合你的登录要求(开启密码登录设为yes,仅密钥登录设为no) - 保存配置后执行
sudo systemctl restart sshd,重启后即可正常SSH登录
方案2:使用Systems Manager Session Manager(无需停实例,要求实例已配置SSM权限)
如果你的实例使用Amazon Linux 2/2023、Ubuntu 16.04+等默认预装SSM Agent的镜像,且实例关联的IAM角色包含AmazonSSMManagedInstanceCore权限,可直接用该方案:
- 进入EC2控制台,选中故障实例,点击顶部「连接」按钮
- 切换到「会话管理器」标签页,点击「连接」即可直接进入实例命令行
- 按方案1的步骤修改sshd配置、重启服务即可
方案3:挂载系统卷到新实例修改(兜底方案)
如果上述两个方案都不可用,再使用挂载卷方案即可:
- 停止故障实例,卸载其根卷
- 启动一个同可用区的临时正常实例,将故障根卷挂载为数据卷
- 进入临时实例,挂载对应分区后修改
sshd_config配置 - 卸载数据卷,重新挂载回原故障实例作为根卷,启动原实例即可
内容的提问来源于stack exchange,提问作者Leonardo Goldstein
相关产品推荐
相关产品推荐

