2014-10-02 64 views
1

我有一些代码需要定期从github获取代码(在Windows计算机上)。如何在Windows子进程中通过ssh执行git获取

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

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

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

  2. 我试着用参数来调用sh.exe,然后发出我的命令,让所有东西或多或少都以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 [email protected]" 
    

    产生

    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). 
    
  3. 我可以使用一个SSH模块中像paramiko蟒蛇建立连接?在我看来,这仅仅是为了进入远程终端。有没有办法让它提供git.exe可以使用的ssh连接?

所以,我会很感激,如果有人已经这样做过或有更好的替代

回答

0

的混帐bash的设置HOME环境变量,它允许混帐找到SSH密钥(在%HOME%/.ssh

您需要确保python进程具有或将HOME定义为相同的PATH。
如“Python os.environ[“HOME”] works on idle but not in a script”中所述,您需要将HOME设置为%USERPROFILE%(或者,在Python中,设置为os.path.expanduser("~"))。

+0

这样做了,谢谢!正确设置HOME变量让它运行 – theodox 2014-10-02 16:55:33

相关问题