Docker build --ssh default无法挂载SSH密钥,克隆私有库失败求助
Docker构建时SSH克隆私有库失败的解决方法
问题核心
你遇到的Host key verification failed错误,本质是第一个RUN指令生成的known_hosts在第二个RUN中不生效——Docker的每个RUN指令都是独立的容器层,前一个RUN创建的~/.ssh目录和known_hosts不会被后续RUN继承,导致git克隆时无法验证Bitbucket的主机密钥。
修正步骤
1. 合并SSH配置与克隆指令到同一个RUN
将添加known_hosts和git克隆的操作放在同一个RUN里,确保上下文一致:
RUN --mount=type=ssh \ mkdir -p -m 0700 ~/.ssh \ && ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts \ && git clone git@bitbucket.org:devteam/db.git
2. 检查本地SSH密钥权限
确保本地的~/.ssh/id_rsa权限正确(必须是600,否则Docker无法读取):
chmod 600 ~/.ssh/id_rsa
3. (可选)使用SSH Agent传递密钥(若密钥有密码)
如果你的SSH密钥设置了密码,先启动ssh-agent并添加密钥:
eval $(ssh-agent -s) ssh-add ~/.ssh/id_rsa
然后简化构建命令,让Docker直接使用agent中的密钥:
DOCKER_BUILDKIT=1 BUILDKIT_PROGRESS=plain docker build --ssh default -t dev-build .
4. (测试用)临时跳过主机密钥验证(不推荐生产环境)
如果只是快速测试,可以通过GIT_SSH_COMMAND跳过验证:
RUN --mount=type=ssh \ GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no" git clone git@bitbucket.org:devteam/db.git
内容的提问来源于stack exchange,提问作者rp346
相关产品推荐
相关产品推荐

