【问题标题】:Using a startup-script to clone a private Github repo?使用启动脚本克隆私有 Github 存储库?
【发布时间】: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


【解决方案1】:

Host key validation failed 更多的是关于 known_hosts 而不是私钥。

ssh-keyscan -t rsa github.com > /root/.ssh/known_hosts 应该处理它,前提是确实使用了/root

这就是为什么在测试中使用 GIT_SSH_COMMAND 设置为 ssh -Tv 可以让您了解 SSH 命令期间实际使用的内容,确保您的启动脚本是否有效。

【讨论】:

    猜你喜欢
    • 2022-08-08
    • 1970-01-01
    • 2019-05-09
    • 2021-09-16
    • 2020-09-23
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多