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

安装Docker后EC2实例SSH连接超时无法登录问题咨询

问题根因

该现象的核心原因是Docker安装或启动过程中修改了系统iptables规则,覆盖了云平台默认放通SSH 22端口的配置。云厂商实例的默认安全组规则仅在机房网关层放通22端口,实例系统内部的iptables默认允许所有入站流量,Docker安装时会自动在iptables中插入自定义规则,一旦规则配置优先级高于默认放行规则,就会阻断22端口的入站请求,最终导致SSH连接超时。

临时恢复SSH连接

如果使用的是AWS等云平台,先通过云平台自带的实例控制台登录入口(AWS对应EC2 Instance Connect/会话管理器,国内云厂商对应VNC远程连接/工作区远程登录)直接登录实例,该登录方式走云厂商内部链路,不需要通过公网SSH:

  • 登录后执行以下命令清空异常iptables规则,临时恢复公网SSH访问:
sudo iptables -F
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
  • 上述配置重启后会失效,恢复SSH连接后需要完成后续永久配置。

永久修复方案

方案1:提前配置iptables永久放通22端口

在安装Docker之前先执行以下操作,确保22端口放行规则优先级高于Docker自动生成的规则:

  • Ubuntu 20环境下:
    1. 安装规则持久化工具:sudo apt install iptables-persistent -y
    2. 添加22端口放行规则:sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT
    3. 保存规则实现重启生效:sudo netfilter-persistent save
  • Amazon Linux环境下:
    1. 添加22端口放行规则:sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT
    2. 保存规则实现重启生效:sudo service iptables save

方案2:禁用Docker自动修改iptables(仅适用于不需要将Docker容器端口映射到公网的场景)

  • 编辑Docker配置文件/etc/docker/daemon.json,添加如下配置:
{
  "iptables": false
}
  • 重启Docker服务让配置生效:sudo systemctl restart docker

预装Docker的AMI异常处理

如果使用Redash等预装Docker的AMI启动实例后直接无法SSH,无需重新制作镜像,在云平台控制台的实例启动参数中,添加用户数据(User Data) 脚本即可,实例首次启动时会自动执行脚本放通22端口:

#!/bin/bash
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
netfilter-persistent save || service iptables save

使用上述配置重新启动实例即可正常通过SSH登录。

内容的提问来源于stack exchange,提问作者Shay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:54:03