我想使用Python脚本执行一个"git push"
命令。我希望通过使用Python的subprocess.Popen()
方法来实现这一点。然而,当我调用"git push"
命令时,ssh代理要求我输入密码以便能够将任何更改推送到仓库。
这里是我的问题-有没有什么办法让我能够传递我的密码短语,这是一个输入所期望的ssh进程,而不是git本身?
process = subprocess.Popen("git push", stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=False)
pin = process.stdin.write("Passphrase")
我承认,每次我git push
或pull
时,摆脱这个ssh-agent的密码短语消息可能会更容易,但是,只是为了知道我很好奇有没有一种方法可以这样实现它。
1条答案
按热度按时间pkwftd7m1#
注意2016年提到的GitPython issue 559:
据我所知,由于GitPython调用git的方式,GitPython不可能使用带密码短语的密钥。
它只是不连接标准输入,这通常是需要读取密码短语。首选的方法是使用一个没有密码短语的特定密钥。
如果没有,git也会调用
GIT_ASKPASS
指向的程序来读取ssh密钥的密码。但是,有一种可能的解决方法,最初适用于GPG:
How to sign commits using the GitPython package
请参阅
03_sign_commit_using_the_gitpython_package.py
。但同样,对于GPG。检查是否可以适应SSH。