连接多AWS账户时出现ssh: connect to host port 22 No route to host错误如何解决
ssh: connect to host abc.com port 22: No route to host
错误核心成因
该报错本质是本地设备无法找到通往目标主机的网络路由,结合切换多个AWS账户的操作场景,常见触发原因如下:
- 账户切换后本地VPN/SSM会话配置未同步更新,原有网络隧道指向旧账户私有网络,无法路由到新账户下的目标资源
- 目标EC2实例关联的安全组/网络ACL未放开你当前公网IP的22端口入站规则,或规则绑定到了旧账户的IP/安全组资源
- 切换账户时执行的自动配置脚本修改了本地路由表,指向错误的网关
- 目标EC2实例处于停止/初始化失败状态,未分配可访问的公网IP/弹性IP
排查流程
1. 验证基础网络连通性
首先执行ping abc.com确认目标域名是否可以正常解析到IP,再执行traceroute abc.com(Windows环境替换为tracert abc.com)查看路由中断节点,判断问题出在本地网络还是AWS侧。
如果解析出来的IP和你目标EC2的公网IP不一致,先检查本地hosts文件是否存在旧的静态绑定记录,或DNS缓存未更新,可执行nslookup abc.com核对官方解析结果。
2. 核对AWS侧配置
- 确认当前登录的AWS账户为目标实例所属账户,检查目标EC2实例状态为运行中,且已分配公网IP/弹性IP
- 检查实例关联的安全组入站规则,确认已放开你当前公网IP的22端口入站权限,源地址不要配置为旧账户的安全组ID或私有网段
- 检查实例所属子网的网络ACL,确认入站、出站规则都未拦截22端口的流量
- 确认实例所属VPC路由表存在指向互联网网关的公网路由,若通过私有网络连接,确认VPN/Direct Connect/SSM会话的路由配置正确
3. 排查本地配置
- 若使用AWS SSM Session Manager连接SSH,确认本地AWS凭证已切换到目标账户,且
~/.ssh/config内的代理配置对应了正确的账户ID和区域 - 检查本地防火墙/杀毒软件是否拦截了22端口的出站请求,可临时关闭防火墙测试连通性
- 若切换账户时执行过网络配置脚本,执行
ip route(Linux/macOS)或route print(Windows)查看路由表,确认目标IP的路由指向正确的网关
快速修复方案
- 清除本地DNS缓存:Linux/macOS执行
sudo systemd-resolve --flush-caches,Windows执行ipconfig /flushdns - 重新切换AWS凭证,执行
aws sts get-caller-identity确认当前使用的是目标账户 - 如为临时网络波动,重启本地路由器或切换网络环境测试
内容的提问来源于stack exchange,提问作者user17183416
相关产品推荐
相关产品推荐

