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

Docker构建执行git clone报Host key verification failure问题问询

问题原因
  • 域名匹配错误:Dockerfile中ssh-keyscan命令仅收集了公开GitLab服务gitlab.com的主机密钥,你实际拉取代码的地址对应私有GitLab域名gitlab.generalbioinformatics.com的主机密钥并未写入构建环境的known_hosts文件,SSH连接时校验不通过直接触发报错。
  • 交互逻辑差异:Docker镜像构建过程为非交互式执行,遇到SSH主机密钥确认的交互提示会直接拒绝连接;容器启动后手动执行git clone时,SSH会弹出确认提示,你输入yes后会自动将对应主机密钥写入known_hosts,因此可以正常执行。
  • (潜在原因)SSH私钥权限不符合要求:通过ADD指令传入的私钥文件默认权限可能为755,SSH安全规则要求私钥权限必须为600,权限过高会导致SSH拒绝读取私钥,也可能触发同类报错。
解决方案

按如下步骤修正Dockerfile配置即可解决问题:

  1. 替换ssh-keyscan的扫描目标为你实际使用的私有GitLab域名
  2. 新增私钥权限修正指令,将私钥权限设置为符合SSH要求的600
  3. 安装依赖前建议先执行apt-get update避免安装包索引过期

修正后的完整Dockerfile参考:

RUN apt-get update && apt-get install -y git
RUN mkdir -p /root/.ssh/
ADD id_rsa /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/id_rsa
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan gitlab.generalbioinformatics.com >> /root/.ssh/known_hosts
RUN git clone git@gitlab.generalbioinformatics.com:gb-devops/dominion.git
CMD sleep 1000

注意:将SSH私钥直接打包进Docker镜像存在极高的泄露风险,任何能获取到镜像的人员都可以导出私钥访问你的私有代码仓库,生产环境建议使用Docker BuildKit的Secret功能传递构建密钥,避免密钥残留在镜像层中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:06:03