0

我有一个简单的 Flask 应用程序,它等待来自我的存储库主机的 webhook。webhookgit.pull()使用gitpython. gitpython代码类似于:

import git
repo_dir = '/path/to/repo'
g = git.cmd.Git(repo_dir)
g.pull()

该应用程序以用户身份使用主管脚本启动admin,其 sshid_rsa.pub公钥已在存储库中注册为部署密钥。

以注册用户身份登录后,admin可以从命令行启动应用程序,并且可以成功从私有存储库中拉取应用程序。但是,当应用程序以 启动时supervisorgit.pull()操作会失败并出现 ssh auth 错误:

Permission denied (publickey). fatal: Could not read from remote repository.

我可以确认启动supervisor托管应用程序的用户是正确的 ( admin)。这表明主管脚本没有为同一用户使用默认的 SSH 密钥。

我已经看到一些关于设置几个环境变量之一的参考,GIT_SSH_COMMAND或者一个旧的GIT_SSH. 我尝试将这些值设置为替换 ssh 字符串(即GIT_SSH_COMMAND='ssh -i /path/to/key')和可执行文件(即GIT_SSH='/path/to/myssh'),但无济于事。

有没有人遇到过这样的事情?这是一个意想不到的问题,我在调试时遇到了麻烦。

4

1 回答 1

0

你有没有尝试过:

import git
repo_dir = '/path/to/repo'
g = git.cmd.Git(repo_dir)
g.USE_SHELL = True
g.pull()
于 2015-09-07T22:50:49.167 回答