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

使用docker-machine连接AWS Docker实例时SSH等待超时问题求助

我之前也碰到过docker-machine连AWS EC2卡在SSH环节的糟心事,咱们一步步来排查解决:

排查与解决步骤

1. 先手动验证SSH基础连通性

别先纠结docker-machine,先手动用SSH连一遍EC2实例,确认底层连通没问题:

ssh -i ~/.ssh/id_rsa ec2-user@{EC2 IP}

注意:AWS官方Docker模板的默认用户通常是ec2-user,部分镜像可能用ubuntu或root,如果ec2-user连不上,试试这两个用户名。

如果手动连不上,那问题出在SSH本身,和docker-machine无关,重点检查:

  • 安全组规则:确认22端口是开放给你本地公网IP的,别只看是否开放了0.0.0.0/0,有时候规则顺序或IP范围配置有误
  • 密钥权限:本地的id_rsa文件权限必须设为600(执行chmod 600 ~/.ssh/id_rsa),否则会被SSH拒绝
  • 实例状态:AWS控制台里查看实例是否完全启动,再去「监控」->「获取系统日志」看看有没有启动报错

2. 指定正确的SSH用户名(最常见的坑)

docker-machine的generic驱动默认用root用户,但AWS官方Docker模板的默认用户是ec2-user,这大概率是卡住的原因!在create命令里加上--generic-ssh-user参数:

sudo docker-machine create --driver generic \
--generic-ip-address={EC2 IP} \
--generic-ssh-key ~/.ssh/id_rsa \
--generic-ssh-user ec2-user \
dockeraws

3. 确认Docker守护进程的远程访问配置

AWS官方模板应该已经配好,但保险起见,手动SSH进实例后检查:

  • 查看/etc/docker/daemon.json(没有就创建),确保包含远程监听配置:
{
  "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2376"]
}
  • 重启Docker服务:sudo systemctl restart docker
  • 验证2376端口是否在监听:sudo netstat -tulpn | grep 2376

4. 延长SSH超时时间

如果是网络延迟导致的超时,增加重试时间:

sudo docker-machine create --driver generic \
--generic-ip-address={EC2 IP} \
--generic-ssh-key ~/.ssh/id_rsa \
--generic-ssh-user ec2-user \
--generic-ssh-timeout 120 \
dockeraws

把超时时间设为120秒,给足连接缓冲。

5. 更新docker-machine到最新版本

旧版本可能存在兼容性问题,更新试试:

curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine && chmod +x /tmp/docker-machine && sudo mv /tmp/docker-machine /usr/local/bin/docker-machine

如果以上步骤都试过还是不行,你可以把手动SSH连接的输出、EC2系统日志,加上--debug参数重新运行docker-machine create的详细日志贴出来,这样能更精准定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:47:44