通过任务调度器在python中运行git命令会导致权限被拒绝错误

通过任务调度器在python中运行git命令会导致权限被拒绝错误,python,windows,git,ssh,Python,Windows,Git,Ssh,我有一个python脚本,我想每隔几分钟运行一次,从git回购中提取数据,基本上如下所示: import os import subprocess import sys def execute_command(command): p = subprocess.Popen(command.split(' '), stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, std

我有一个python脚本,我想每隔几分钟运行一次,从git回购中提取数据,基本上如下所示:

import os
import subprocess
import sys

def execute_command(command):
    p = subprocess.Popen(command.split(' '), stdout=subprocess.PIPE, 
                         stderr=subprocess.PIPE)
    stdout, stderr = p.communicate()
    #do some stuff with stdout, stderr - return stderr if it exists

if __name__ == "__main__":
    os.chdir("C:\MyGitRepo")

    reset_command = "git reset --hard HEAD"
    pull_command = "git pull"

    reset_stderr = execute_command(revert_command)
    pull_stderr = execute_command(pull_command)
    #do some stuff with stderrs
我已经创建了一个ssh密钥,并将其添加到ssh代理以及承载repo的服务器中。当我通过powershell运行脚本时,它工作正常,并且会更新repo,但当我通过任务计划程序设置任务以运行此脚本时,会导致权限拒绝错误

我已将task scheduler中的任务更改为在手动运行该任务的帐户下运行,但仍然得到以下结果:

Permission denied (publickey).

fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

关于如何让脚本使用正确的密钥,您有什么想法吗?

一个可能的原因是您的ssh密钥在powershell或Git bash之外没有被识别。对于Git bash,您可以尝试以下操作:

子进程调用([“C:\\Program Files\\Git\\Git bash.exe”、“Git”、“push”])

一个可能的原因是,您的ssh密钥在powershell或Git bash之外无法识别。对于Git bash,您可以尝试以下操作:

子进程调用([“C:\\Program Files\\Git\\Git bash.exe”、“Git”、“push”])

密钥是否有密码短语?从任务计划程序运行代理时,ssh可能不知道您的代理。如果任务使用存储的密码,则用户应在加载用户配置文件(例如用户环境变量)的情况下登录,并访问保存的凭据和网络。但是该进程在服务会话中运行,因此如果ssh代理需要,它无法访问GUI,包括用于IPC的窗口消息。尝试将任务配置为要求用户已登录,这将在用户的交互会话而不是服务会话中运行任务。密钥是否具有密码短语?从任务计划程序运行代理时,ssh可能不知道您的代理。如果任务使用存储的密码,则用户应在加载用户配置文件(例如用户环境变量)的情况下登录,并访问保存的凭据和网络。但是该进程在服务会话中运行,因此如果ssh代理需要,它无法访问GUI,包括用于IPC的窗口消息。尝试将任务配置为要求用户已登录,这将在用户的交互式会话而不是服务会话中运行任务。