【发布时间】:2021-09-04 16:49:06
【问题描述】:
我在 Google Cloud Compute 上使用 startup-script。
脚本的目标是在计算服务器启动时从 Github 克隆一个私有 repo。
为了进行身份验证,我有一个用于这个 repo 的公共部署密钥。在启动时传递给脚本的私有部署密钥。
... # Some action where the private key is passed in
chmod u=rw,go= github_pri_deploy_key
eval "$(ssh-agent -s)" # Start ssh-agent in the background
ssh-add ${WORKING_DIR_PATH}/github_pri_deploy_key
ssh-keyscan -t rsa github.com > /root/.ssh/known_hosts
我遇到的问题是 /root/.ssh/known_hosts 文件在启动期间无法访问。
所以我在日志中收到错误消息Host key validation failed.
我尝试了什么
我尝试过手动创建文件,但同样的问题,因为 root 用户无法创建文件。
在机器启动后,我能够获得添加主机密钥的预期结果,我 ssh 进入机器并手动执行任务。
我的startup-script 以 root 身份运行,这是 GCP Compute 上的唯一选项。但是如果它以root身份运行,为什么ssh-keyscan不能附加到/root/文件?
这是我能说明的最好的,因为 repo 是私有的。谢谢。
【问题讨论】:
-
我发布的是评论而不是答案,因为我最近没有对此进行测试。 Git 支持环境变量
GIT_SSH_COMMAND。如果设置,git 将使用git pull的指定命令。在你的启动脚本中试试这个:GIT_SSH_COMMAND="ssh -i /path/to/private-key" git pull文档:git-scm.com/docs/git 确保私钥文件的权限是只读的(400)。 -
@JohnHanley 谢谢!我不喜欢使用环境变量,但你的回答实际上让我想到了使用这种方法:
sudo -i mkdir /root/.ssh/; sudo touch /root/.ssh/known_hosts; ssh-keyscan -t rsa github.com | sudo tee -a /root/.ssh/known_hosts
标签: git google-cloud-platform ssh google-compute-engine