Dockerfile配置Github known_hosts后www-data执行git报Host key verification failed
问题原因
- 你当前将github的主机密钥写入了
/root/.ssh/known_hosts路径,/root目录默认权限为0700,仅root用户可访问,切换为www-data用户后,ssh进程无法读取root目录下的配置文件,自然无法完成主机密钥校验,因此抛出Host key verification failed错误。
解决方案
推荐使用全局ssh配置方案,无需调整用户权限,所有用户均可生效:
将原build阶段中写入root用户ssh配置的代码替换为写入全局ssh配置:
# 原代码(删除) # RUN mkdir -p /root/.ssh && \ # chmod 0700 /root/.ssh && \ # ssh-keyscan -t rsa github.com >> /root/.ssh/known_hosts # 替换为 RUN ssh-keyscan -t rsa github.com >> /etc/ssh/ssh_known_hosts
全局ssh known_hosts路径
/etc/ssh/ssh_known_hosts是ssh客户端默认会读取的系统级可信主机密钥存储位置,所有用户执行ssh操作时都会自动校验该文件内的密钥,无需额外配置。
如果你需要仅给www-data用户配置,也可以单独写入www-data的ssh目录:
RUN mkdir -p /home/www-data/.ssh && \ chmod 0700 /home/www-data/.ssh && \ ssh-keyscan -t rsa github.com >> /home/www-data/.ssh/known_hosts && \ chown -R www-data:www-data /home/www-data/.ssh USER www-data
内容的提问来源于stack exchange,提问作者user11931805
相关产品推荐
相关产品推荐

