首页 > 解决方案 > 在 Web 应用程序中使用 git SSH,对服务器上的文件系统没有写入权限

问题描述

我的 Web 应用程序在 Google App Engine(标准环境)上运行,其目的是对某个 Github 私有存储库进行自动修改并推送提交。

为此,我设置了 SSH 公钥/私钥,将公钥上传到 Github,现在我想将私钥复制到 Web 应用程序的服务器文件系统(本质上是 GAE 的服务器)中,以便它可以首先克隆 repo并推送提交。

问题是我无权写入文件系统,因为它在 Google App Engine 上运行,因此我无法将私钥复制到该~/.ssh位置。我唯一拥有读/写权限的地方是 tmp 文件夹。

我的第一种方法是查看是否可以将私钥文件复制到 tmp 文件夹中,并GIT_SSH_COMMAND在运行 git 命令时使用 env var 指定该密钥。所以像: GIT_SSH_COMMAND='ssh -i /path/to/tmp/privatekey' git clone git@github.com:username/test-repo.git

但是,在运行应用程序时,git 仍在查看~/.ssh要进行身份验证的文件夹,我无权对其进行写入。

我对 ssh 和 git 系统的了解非常有限 - 我想知道是否有解决方法,并且应用程序必须在 Google App Engine 上运行。

标签: gitgoogle-app-enginegithubsshgoogle-cloud-platform

解决方案


git 仍在查看文件夹 ~/.ssh 进行身份验证,我无权写入。

仔细检查:

GIT_SSH_COMMAND='ssh -vi /path/to/tmp/privatekey' git clone git@github.com:username/test-repo.git

如果您正在使用 Git 应该使用您的私钥ssh -i,除非像这里一样,您需要添加 -o IdentitiesOnly=yes.


推荐阅读