git push/pull 继续尝试生成 GUI 窗口

git push/pull 继续尝试生成 GUI 窗口

每次我尝试在我们的一个工作服务器上执行 git push 或 pull 时,都会收到“错误:无法打开显示:”警告,除非我使用 -X 转发登录,在这种情况下会弹出一些丑陋的 90 年代窗口让我输入密码。

是否有任何设置可以抑制此行为?我完全不知所措,在 Google 上找不到任何东西……

编辑: 开启X转发后弹出的窗口如下图所示: 在此处输入图片描述

答案1

您可以使用 设置所需的 askpass 命令git config。相关的配置键名为core.askpass

更改方法:git config --global core.askpass /path/to/command

可以使用环境变量覆盖 Git 配置中设置的值GIT_ASKPASS

如果core.askpass没有设置,它首先尝试环境变量中定义的命令SSH_ASKPASS。后备顺序中的下一个(也是最后一个)是一个简单的内置密码提示。

来源及详情:git-config 文档(搜索core.askpass

答案2

这听起来像是你正在使用松树入口程序来输入您的 git 登录密码,其中存在多种变体。 在您的例子中,所选的默认密码似乎是 pinentry-gtk2,这确实非常丑陋。 :)

试试你的运气

ls -l /usr/bin/pinentry*

查看安装了哪些变体。可能有一个二进制文件被符号链接,即“默认”。您可以通过重新链接符号链接来选择另一个 pinentry 程序,尽管这可能会使您的包管理器感到困惑。要查看这是否是实际问题,请删除 /usr/bin/pinentry 符号链接或将其重新链接到 pinentry-curses,看看行为是否发生变化。

有趣的是,我不记得 git 真的使用过 pinentry 程序,但 gnupg 确实使用了。也许你有一些涉及 gpg-agent、SSH 密钥和有效的 GnuPG 通过 pinentry 要求输入密码的设置?

如果您没有权限直接摆弄符号链接,您可以尝试编辑 gpg-agent 配置:

mkdir -p ~/.gnupg   # may fail if dir already exists
echo 'pinentry-program /usr/bin/pinentry-curses' >> ~/.gnupg/gpg-agent.conf

这应该指示 gpg-agent 使用基于 cli 的 pinentry-curses 程序。这是一个不太可能的尝试,但值得一试。

相关内容