Dockerfile中RUN --mount=type=ssh失效,拉取私有Python库失败求助
问题解决:Docker构建时SSH主机密钥验证失败
错误原因
容器构建环境是全新的,没有预先信任私有仓库的SSH主机密钥,首次连接时触发Host key verification failed错误,和私钥本身无关。
修复步骤
1. 在Dockerfile中添加主机密钥信任逻辑
修改RUN命令,先通过ssh-keyscan获取目标仓库主机的密钥并写入known_hosts,再执行pip install:
RUN --mount=type=ssh \ mkdir -p ~/.ssh && \ # 替换成你的私有仓库实际主机地址,比如git@example.com中的example.com ssh-keyscan example.com >> ~/.ssh/known_hosts && \ .venv/bin/pip install SOME_LIB --extra-index-url https://example.com/pypi/ -U
2. 修正docker buildx build的--ssh参数格式
原命令的参数格式不正确,需要指定default别名对应私钥路径:
docker buildx build --ssh default=/path/to/the/private/key/id_rsa .
--mount=type=ssh默认使用default SSH连接,因此build命令中必须明确绑定default到你的私钥。
备选方案:直接复制本地信任的主机密钥
如果ssh-keyscan无法获取目标主机密钥,可将本地~/.ssh/known_hosts中对应主机的密钥行复制到项目内的known_hosts文件,然后在Dockerfile中添加:
COPY known_hosts ~/.ssh/known_hosts RUN --mount=type=ssh .venv/bin/pip install SOME_LIB --extra-index-url https://example.com/pypi/ -U
内容的提问来源于stack exchange,提问作者WZH
相关产品推荐
相关产品推荐

