首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gitpython ssh密码

Gitpython ssh密码
EN

Stack Overflow用户
提问于 2015-07-04 21:12:42
回答 2查看 3.1K关注 0票数 1

我正在尝试将gitpython与IDE集成,但我在push方面遇到了一些问题。

代码语言:javascript
复制
remote_repo = self.repo.remotes[remote]
remote_repo.push(self.repo.active_branch.name)

当我运行这个命令,或者只是

git推送-瓷器起源大师

提示询问我的ssh密码。

代码语言:javascript
复制
Enter passphrase for key '/home/user/.ssh/id_rsa': 

我的问题是:

  • 提示可能询问或不问此密码。
  • 如果需要密码,我需要跨平台解决方案。

我如何解决这个问题,并提供一个接口来识别是否需要密码,如果需要,则能够提供密码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-05 06:36:42

如果您希望完全控制如何建立ssh连接,并且如果使用git 2.3或更高版本,则可以使用GIT_SSH_COMMAND环境变量集实例化git。它指向一个名为ssh的脚本。因此,您可以确定是否需要密码,并启动额外的GUI以获得所需的输入。

在代码中,它看起来如下所示:

代码语言:javascript
复制
remote_repo = self.repo.remotes[remote]

# here is where you could choose an executable based on the platform.
# Shell scripts might just not work plainly on windows.
ssh_executable = os.path.join(rw_dir, 'my_ssh_executable.sh')
# This permanently changes all future calls to git to have the given environment variables set
# You can pass additional information in your own environment variables as well.
self.repo.git.update_environment(GIT_SSH_COMMAND=ssh_executable)

# now all calls to git which require SSH interaction call your executable
remote_repo.push(self.repo.active_branch.name)

请注意,这只适用于通过SSH访问资源。例如,如果协议是HTTPS,则可能会提供密码提示。

在GIT2.3之前,您可以使用GIT_SSH环境变量。它的工作方式不同,因为它只包含到ssh程序的路径,而附加参数将传递给该路径。当然,这也可能是您的脚本,类似于上面所示。我想更准确地指出这两个环境变量之间的差异,但我缺乏这样做的个人经验。

票数 1
EN

Stack Overflow用户

发布于 2015-07-05 04:03:02

跨平台解决方案是为您提供ssh-agent并调用ssh-add

还请参阅"How can I run ssh-add automatically, without password prompt?“以获得其他替代方案,如密钥链。

代码语言:javascript
复制
if [ -z "$SSH_AUTH_SOCK" ] ; then
  eval `ssh-agent -s`
  ssh-add
fi

它会向你要密码,然后储存起来。

任何后续的ssh调用,如果需要ssh私钥(使用gitpython或任何其他工具),都不需要输入私钥密码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31225140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档