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

Windows10下用Hyper-V驱动创建Docker Machine遇SSH连接超时错误求助

Docker Machine Hyper-V 创建时 SSH 连接超时(VM已运行且可访问Shell)

你遇到的问题很典型:明明Hyper-V里的machine4虚拟机处于运行状态,甚至能直接访问它的shell,但Docker Machine就是卡在SSH连接验证这一步,报重试次数超限的错误。结合你提供的调试信息,VM的IP(192.160.1.100)能正常获取,但SSH命令执行失败(exit status 255),可以试试下面这些排查和修复步骤:

排查与修复步骤

1. 先确认虚拟交换机的网络连通性

  • 打开Hyper-V管理器,找到你用的docker Virtual Switch,确认它是外部网络类型(绑定了你的物理网卡),并且物理网卡本身能正常联网
  • 在Windows主机的命令行里ping VM的IP:
    ping 192.160.1.100
    
    如果ping不通,大概率是虚拟交换机的网络权限问题:
    • 检查Windows防火墙是否拦截了VM和主机之间的通信,暂时关闭防火墙测试一下
    • 确认虚拟交换机的"允许管理操作系统共享此网络适配器"选项已勾选

2. 手动验证SSH连接细节

从主机直接用OpenSSH客户端连接VM,看具体报错:

ssh -i "C:\Users\Manish Kumar\.docker\machine\machines\machine4\id_rsa" docker@192.160.1.100 -p 22 -v

(加-v参数可以看到详细的连接日志)

根据不同错误对应处理:

  • 如果提示Permission denied (publickey):
    Windows下OpenSSH对私钥文件的权限要求很严格,右键id_rsa文件→属性→安全→高级:
    • 点击"禁用继承",选择"将继承的权限转换为此对象的显式权限"
    • 删除所有非当前用户的权限条目,只保留你自己的用户,并设置为"完全控制"
  • 如果提示Connection refused:
    进入VM的shell,执行service sshd status检查SSH服务状态,如果未启动,执行service sshd start手动启动,同时可以设置开机自启:update-rc.d sshd enable

3. 调整Docker Machine的SSH重试参数

默认的60次重试可能不够应对你的网络初始化速度,创建机器时可以手动增加超时和重试次数:

docker-machine create --driver hyperv --hyperv-virtual-switch "docker Virtual Switch" --ssh-timeout 300 --ssh-retries 120 machine4

(--ssh-timeout是单次连接超时秒数,--ssh-retries是总重试次数)

4. 替换最新版boot2docker镜像

旧版本的boot2docker镜像可能存在SSH服务启动慢或者兼容性问题:

  • 删除缓存里的旧镜像:
    del C:\Users\Manish Kumar\.docker\machine\cache\boot2docker.iso
    
  • 下载最新版的boot2docker ISO,放到上述缓存目录中
  • 重新执行创建命令

可能的原因总结

  • 虚拟交换机的网络隔离问题,导致主机无法和VM建立TCP连接(SSH用的22端口)
  • SSH私钥文件权限不符合OpenSSH的安全要求,导致认证失败
  • boot2docker镜像内的SSH服务启动延迟,超过了Docker Machine的默认等待时间
  • Windows防火墙或安全软件拦截了主机与VM之间的SSH通信

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:36:20