如何使用带有密码短语的SSH密钥,使用GitPython克隆git存储库

3
我目前在尝试使用GitPython和一个带有密码短语的SSH密钥(使用Python 3.5.2)克隆远程存储库。然而,文档在这方面并没有提供很多帮助信息:
“您还可以使用Git命令上的新上下文管理器指定每个调用的自定义环境,例如使用特定的SSH密钥。以下示例适用于从v2.3开始使用的git:”
ssh_cmd = 'ssh -i id_deployment_key'
with repo.git.custom_environment(GIT_SSH_COMMAND=ssh_cmd):
    repo.remotes.origin.fetch()

从中我得出的结论是,我可以通过ssh_cmd变量加载特定的密钥,GitPython将加载它,但是如何输入密码?用户会收到提示吗?此外,我正在尝试从远程克隆,上面的代码假定您已经这样做或者首先创建了一个本地仓库?对我来说仍不是很清楚。

你认为我想做的事情可能吗?如果可能,你能提供一些例子吗?我希望看到一个简单的工作流:

  1. 克隆远程存储库
  2. 添加更改
  3. 提交
  4. 推送

所有这些操作都需要一个有密码的SSH密钥。

我还应该提到,我在Windows 7机器上进行这个操作,pexpect与之不兼容。


1
你可以尝试实现一个程序来获取用户凭据,并使用GIT_ASKPASS环境变量指向它。更多信息可以在这里找到:https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables。 - Byron
或者,您可以实现GIT_SSH变量,并设置它以为您提供凭据。 - Byron
你是否有一个可用的示例? - drohm
不过,你可以直接使用git命令行尝试这些操作,无需从一开始就涉及GitPython。 - Byron
设置一个ssh-agent并将ssh密钥添加到ssh0agent中。然后ssh就不必提示输入密码了。 - Barry Scott
你最终解决了这个问题吗? - crypdick
1个回答

0

我有同样的问题。四年半过去了,它从未得到解答。一定有办法使用GitPython和SSH密钥,这是一个非常基本的功能。我不明白为什么没有文档记录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接