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

构建Python Docker镜像时SSH连接GitHub失败,如何解决?

问题描述

需求

尝试在构建Python Docker镜像时通过SSH连接GitHub,使用的Dockerfile如下:

FROM python:3.10.4 AS builder

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /running

COPY ./pyproject.toml ./

# copy key
COPY github.pem /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/id_rsa

# Add the necessary SSH config
RUN echo 'Host * \n\
  IdentityFile /root/.ssh/id_rsa \n\
' > /root/.ssh/config

RUN which ssh

RUN ssh -T git@github.com

遇到的错误

构建时出现以下错误:

#12 [8/8] RUN ssh -T git@github.com
#12 sha256:009cd770ecaf452b09b48969487c7957d5c5fddf449cc2ea54bc195b09c44e37
#12 1.230 Host key verification failed.
#12 ERROR: executor failed running [/bin/sh -c ssh -T git@github.com]: exit code: 255

本地Mac环境使用该SSH密钥可正常连接GitHub。

咨询

如何在构建Docker镜像时成功连接GitHub?


解决方案

出现Host key verification failed是因为Docker构建环境是全新的,没有预存GitHub的主机公钥,导致SSH连接时无法验证主机身份。本地环境能正常连接是因为之前已通过交互验证过GitHub的主机密钥,密钥已存在本地~/.ssh/known_hosts文件中。

解决方法如下:

方法一:安全添加GitHub主机密钥(推荐)

  1. 在本地终端执行以下命令,获取GitHub的主机公钥:
ssh-keyscan github.com > github_host_keys
  1. 将生成的github_host_keys文件和你的github.pem放在同一目录下,修改Dockerfile:
FROM python:3.10.4 AS builder

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /running

COPY ./pyproject.toml ./

# 创建.ssh目录并设置正确权限
RUN mkdir -p /root/.ssh && chmod 700 /root/.ssh

# 复制GitHub主机公钥到known_hosts
COPY github_host_keys /root/.ssh/known_hosts
RUN chmod 644 /root/.ssh/known_hosts

# 复制SSH密钥并设置权限
COPY github.pem /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/id_rsa

# 添加SSH配置
RUN echo 'Host * \n\
  IdentityFile /root/.ssh/id_rsa \n\
' > /root/.ssh/config
RUN chmod 600 /root/.ssh/config

# 测试SSH连接
RUN ssh -T git@github.com

方法二:临时跳过主机密钥验证(仅用于测试,不推荐生产环境)

如果只是临时测试,可以在SSH命令中添加参数跳过主机验证,但这会带来安全风险:

# 替换原有的测试命令
RUN ssh -o StrictHostKeyChecking=no -T git@github.com

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:42:40