Docker构建中git clone的yes命令失效问题求助
解决Docker中自动克隆私有Git仓库的问题
问题原因
第一次通过SSH克隆陌生主机的私有仓库时,Git会弹出确认主机指纹的交互提示,yes yes | git clone的输出不符合提示要求(提示仅需输入一次yes),因此管道无法自动完成确认。
解决方案
方法1:临时跳过主机指纹验证(单次克隆)
在git clone命令前添加环境变量,让SSH自动接受新主机密钥:
GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no" git clone <你的私有仓库SSH链接>
方法2:全局配置SSH自动确认(多次克隆)
在Dockerfile中添加SSH配置,后续所有SSH连接都自动跳过指纹确认:
RUN mkdir -p ~/.ssh && echo "StrictHostKeyChecking no" >> ~/.ssh/config && chmod 600 ~/.ssh/config
配置完成后直接执行git clone即可。
方法3:提前添加主机指纹(更安全)
不关闭严格检查,提前将仓库主机的指纹写入known_hosts:
- 本地执行
ssh-keyscan <仓库主机域名>获取指纹(比如ssh-keyscan github.com) - 在Dockerfile中添加:
RUN mkdir -p ~/.ssh && echo "<获取到的主机指纹内容>" >> ~/.ssh/known_hosts && chmod 600 ~/.ssh/known_hosts
额外注意事项
确保Docker环境中SSH密钥文件权限为600,否则SSH会拒绝使用:
RUN chmod 600 ~/.ssh/id_rsa
内容的提问来源于stack exchange,提问作者unknown_user
相关产品推荐
相关产品推荐

