我有一个简单的 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
可以从命令行启动应用程序,并且可以成功从私有存储库中拉取应用程序。但是,当应用程序以 启动时supervisor
,git.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'
),但无济于事。
有没有人遇到过这样的事情?这是一个意想不到的问题,我在调试时遇到了麻烦。