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

使用docker-machine创建EC2 Spot实例时SSH环节失败求助

排查Docker Machine创建EC2 Spot实例SSH失败的步骤

听起来你已经搞定了基础的密钥配置,能通过Putty连实例说明网络和密钥本身是没问题的,问题大概率出在Docker Machine的SSH参数配置或者密钥格式上,给你几个具体的排查方向:

  • 检查密钥格式与路径
    Putty用的是.ppk格式的密钥,但Docker Machine需要OpenSSH格式的私钥(比如id_rsa)。如果你之前只生成了Putty格式的密钥,得用Puttygen把它转换成OpenSSH私钥。另外,创建实例时要确保用--ssh-key参数指定正确的私钥路径,比如:

    docker-machine create --driver amazonec2 --amazonec2-spot-price "0.01" --amazonec2-ssh-key "你的AWS密钥对名称" --ssh-key "/path/to/your/openssh-private-key" dev4
    

    还要注意私钥文件的权限,必须设置成600,否则SSH会拒绝使用:

    chmod 600 ~/.ssh/id_rsa
    
  • 确认SSH用户名是否正确
    不同的EC2 AMI默认用户名不一样:

    • Amazon Linux 2/2023:ec2-user
    • Ubuntu:ubuntu
    • CentOS:centos
      如果Docker Machine用的默认用户名不对,会导致SSH认证失败。创建时可以用--ssh-user指定正确的用户:
    docker-machine create --driver amazonec2 --ssh-user ec2-user ... dev4
    
  • 查看Debug日志定位具体错误
    直接用docker-machine inspect可能只给模糊的错误,建议重新创建时加上--debug参数,这样能看到SSH环节的详细日志:

    docker-machine --debug create --driver amazonec2 --amazonec2-spot-price "0.01" ... dev4
    

    从日志里你能看到是认证失败、连接超时还是其他问题,比如有没有出现Permission denied或者Connection refused的具体提示。

  • 检查安全组与网络配置
    虽然你能通过Putty连接,但要确认运行Docker Machine的EC2实例的IP是否在目标Spot实例安全组的22端口允许列表里。另外,Spot实例的VPC配置是否正确,有没有开启公网IP(如果是用公网连接的话)。

  • 手动测试Docker Machine的SSH命令
    你可以从运行Docker Machine的实例上,手动用OpenSSH命令连接Spot实例,模拟Docker Machine的操作:

    ssh -i /path/to/your/private-key ssh-user@spot-instance-public-ip
    

    如果这个命令能成功,说明基础的SSH没问题,那问题可能出在Docker Machine的参数配置上;如果失败,那就能直接看到具体的错误原因。

试试这些步骤,应该能定位到问题所在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:01:23