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

GCP Compute启动脚本克隆Github私有仓库时known_hosts无法访问如何解决

问题原因

  • 核心原因是GCP启动脚本的执行时机早于root用户家目录的初始化流程:/root/.ssh目录在启动脚本运行时还未被系统自动创建,直接写入/root/.ssh/known_hosts会因为上层目录不存在报错,并非root用户没有写入权限。你手动SSH登录机器时,系统已经完成了root家目录的初始化,.ssh目录已经存在,所以执行相同命令可以正常写入。
  • 少数场景下是SELinux、AppArmor这类安全模块处于启动加载阶段,临时限制了对/root目录的写入操作,不过这类情况占比极低。

解决方案

方法1:提前创建.ssh目录并设置正确权限(推荐)

在执行ssh-keyscan之前先手动创建/root/.ssh目录,配置符合ssh要求的权限即可,修改后的代码如下:

... # 私有密钥传入的相关操作
chmod u=rw,go= github_pri_deploy_key
eval "$(ssh-agent -s)"  # 后台启动ssh-agent
ssh-add ${WORKING_DIR_PATH}/github_pri_deploy_key
# 新增以下3行代码
mkdir -p /root/.ssh
chmod 700 /root/.ssh
ssh-keyscan -t rsa github.com > /root/.ssh/known_hosts
chmod 600 /root/.ssh/known_hosts

mkdir -p参数会自动创建不存在的父目录,避免目录不存在的报错;ssh要求.ssh目录权限最高为700、known_hosts文件权限最高为600,否则会触发权限校验失败的问题。

方法2:临时禁用主机密钥校验(适合可信场景)

如果不需要做主机密钥校验,可以在执行git clone时通过环境变量指定ssh参数跳过校验,不需要处理known_hosts相关逻辑,命令示例如下:
GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no" git clone git@github.com:你的用户名/你的私有仓库名.git
该方式仅建议用于访问github这类可信官方站点的场景,不建议对不可信的第三方仓库使用。

内容的提问来源于stack exchange,提问作者engineer-x

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 13:36:04