git - 在 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 上运行。
解决方案
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
.
推荐阅读
- python - 使用 OpenCv (cv2) 保存时帧数据发生变化
- reactjs - createRef 在反应无状态组件中无法正常工作
- r - 从xml提取数据到R数据框
- mysql - MySQL 性能:按连接表的内容排序
- bar-chart - 如何根据系列键值更改莫里斯条颜色?
- cakephp - 似乎无法在 cakephp 3.x 中保存数据
- google-apps-script - 正则表达式查找自定义标签中的所有文本
- node.js - 在前端代码中访问 NODE_ENV 有意义吗?
- google-kubernetes-engine - 将应用部署到 Google Kubernetes Engine
- javascript - 为什么 Number()/getTime() 方法返回自 1.1.1970 以来的毫秒数?