git 如何将参数传递给需要输入的子进程

zte4gxcn  于 2022-11-20  发布在  Git
关注(0)|答案(1)|浏览(143)

我想使用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 pushpull时,摆脱这个ssh-agent的密码短语消息可能会更容易,但是,只是为了知道我很好奇有没有一种方法可以这样实现它。

pkwftd7m

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。

相关问题