防止git弹出gnome密码框

29

我以前没有问过这种类型的问题,所以这可能不是正确的网站。

我使用下拉模式连接到热键的xfce终端。当其他窗口变为活动状态时,它会关闭,这很好。然而,当我使用git并让它推送或拉取https url时,它会弹出一个对话框来要求我输入密码,而不是让我直接在命令行中输入密码,这就不太好了。

通常,我会通过谷歌搜索来找到答案,但很遗憾,大多数人都试图完全停止git询问密码,而不是阻止对话框,因此这很难谷歌(相信我; 当我足够生气时,我已经尝试了几个月)。

如何防止git弹出任何用于密码等的图形窗口? Git表示正在使用/usr/lib/seahorse/seahorse-ssh-askpass 来请求密码,因此如果有某种配置选项可以防止其使用该选项(或具有等效效果的选项),那就太好了。

非常感谢您的帮助。


1
我认为这个问题适合在Stack Overflow上提问,因为它涉及到一个开发者工具(git)。 - Nick McCurdy
2个回答

31
看起来像是git可能会使用 GIT_ASKPASSSSH_ASKPASS 环境变量来判断是否应该使用一个单独的程序提示输入密码。
尝试运行 unset GIT_ASKPASSunset SSH_ASKPASS。现在尝试从git仓库推送或拉取。如果成功了,将适当的命令添加到 .bashrc.zshrc 或您用来在shell启动时运行命令的任何文件中。
您还可以使用 git config --global core.askpass YOUR_PREFERRED_PROMPT_COMMAND 来覆盖 git 的 core.askpass 设置的值。
来自git-config手册的相关信息:

core.askpass

一些需要交互式地要求密码的命令(例如svn和http接口)可以通过这个变量的值告知使用外部程序。可以由GIT_ASKPASS环境变量覆盖。如果未设置,则回退到SSH_ASKPASS环境变量的值,如果失败则回退到简单的密码提示。外部程序将被赋予适当的提示作为命令行参数,并将密码写入其STDOUT。

原始来源:http://kartzontech.blogspot.com/2011/04/how-to-disable-gnome-ssh-askpass.html

有没有办法告诉git如果设置了SSH_ASKPASS就忽略它?我的意思是,如果未设置SSH_ASKPASS,哪个程序会被调用? - naught101
它会检查 GIT_ASKPASS,然后是 core.askPass,接着是 SSH_ASKPASS,最后在终端上提示您。您的图形环境可能会将其中一个变量设置为其默认凭据助手之一。请查看此 man 页面以获取更多信息:https://www.kernel.org/pub/software/scm/git/docs/gitcredentials.html - Nick McCurdy
我知道,我的意思是,如果这些变量都没有设置,那么该怎么称呼它?因为你可以将其添加到 core.askpass 中,并完全忽略 SSH_ASKPASS - naught101
8
如果您使用的是Windows系统,只需禁用此GUI,请运行git config --global core.askpass "" - brettwhiteman

1

在运行可能需要密码的git命令时,请取消DISPLAY,gnome-ssh-askpass将使用文本终端提示。

例如:

DISPLAY= git push

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