Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在windows子进程中通过ssh运行git fetch_Python_Windows_Git_Github_Ssh - Fatal编程技术网

Python 如何在windows子进程中通过ssh运行git fetch

Python 如何在windows子进程中通过ssh运行git fetch,python,windows,git,github,ssh,Python,Windows,Git,Github,Ssh,我有一些代码需要定期(在Windows机器上)从github获取代码 当我手动拉取时,我使用GitBash,我已经为我检查的repos运行了ssh密钥,所以一切都很好。但是,当我尝试在python子流程中运行相同的操作时,我没有GitBash提供的ssh服务,并且无法对repo进行身份验证 我应该如何从这里开始。我可以想出几个不同的选择: 我可以恢复使用https://fetches。这是有问题的,因为我获取的repo使用双因素身份验证,并且将在无人参与的情况下运行。有没有办法从命令行访问具有2

我有一些代码需要定期(在Windows机器上)从github获取代码

当我手动拉取时,我使用GitBash,我已经为我检查的repos运行了ssh密钥,所以一切都很好。但是,当我尝试在python子流程中运行相同的操作时,我没有GitBash提供的ssh服务,并且无法对repo进行身份验证

我应该如何从这里开始。我可以想出几个不同的选择:

  • 我可以恢复使用https://fetches。这是有问题的,因为我获取的repo使用双因素身份验证,并且将在无人参与的情况下运行。有没有办法从命令行访问具有2fa的https回购

  • 我尝试过使用参数调用sh.exe,这些参数将触发ssh代理,然后发出命令,使所有内容都或多或少地像gitBash中的那样运行,但这似乎不起作用:

    "C:\Program Files (x86)\Git\bin\sh.exe"  -c "C:/Program\ Files\ \(x86\)/Git/bin/ssh-agent.exe; C:/Program\ Files\ \(x86\)/Git/bin/ssh.exe -t git@github.com"
    
    产生

    SSH_AUTH_SOCK=/tmp/ssh-SiVYsy3660/agent.3660; export SSH_AUTH_SOCK;
    SSH_AGENT_PID=8292; export SSH_AGENT_PID;
    echo Agent pid 8292;
    Could not create directory '/.ssh'.
    The authenticity of host 'github.com (192.30.252.129)' can't be established.
    RSA key fingerprint is XXXXXXXXXXX
    Are you sure you want to continue connecting (yes/no)? yes
    Failed to add the host to the list of known hosts (/.ssh/known_hosts).
    Permission denied (publickey).
    
  • 我可以使用python中的ssh模块,比如
    paramiko
    来建立连接吗?在我看来,这只是为了ssh’ing到远程终端。有没有办法让它提供git.exe可以使用的ssh连接


  • 因此,如果有人曾经这样做过,或者有更好的选择,我将不胜感激。

    git bash设置了
    HOME
    环境变量,允许git查找ssh密钥(在
    %HOME%/.ssh

    您需要确保python进程具有相同的路径或定义相同的路径。

    如“”中所述,您需要将
    HOME
    设置为
    %USERPROFILE%
    (或者,在python中,设置为
    os.path.expanduser(“~”
    )。

    成功了,谢谢!正确设置HOME变量使其运行